Ticket
so farclass Ticket { private String occasion; private String date; private int ticketNumber; private static int nextTicketNumber = 1; public Ticket(String occasion, String date) { this.occasion = occasion; this.date = date; ticketNumber = nextTicketNumber; nextTicketNumber = nextTicketNumber + 1; } public String toString() { // not yet written } }
Ticket
's toString
methodpublic String toString() { int ticketWidth = Math.max(occasion.length(), date.length()); String str = ""; str += horizontalLine(ticketWidth); str += padString(occasion, ticketWidth); str += padString(date, ticketWidth); str += horizontalLine(ticketWidth); return str; } private static String horizontalLine(int width) { String str = "+"; for (int i = 0; i < width; i = i + 1) { str = str + "-"; } str = str + "+\n"; return str; } private static String padString(String text, int width) { int amountOfPadding = width - text.length(); int amountOfLeftPadding = amountOfPadding / 2; int amountOfRightPadding = (int) (Math.round(amountOfPadding / 2.0)); String str = "|"; for (int i = 0; i < amountOfLeftPadding; i = i + 1) { str = str + " "; } str = str + text; for (int i = 0; i < amountOfRightPadding; i = i + 1) { str = str + " "; } str = str + "|\n"; return str; }
Q: Think back to lecture 3. Why are these methods inefficient, and how would you rewrite them to make them more efficient?
static
horizontalLine
:
Ticket
, just use, e.g.:
horizontalLine(10);
Ticket.horizontalLine(10);(but whether this works depends on its visibility)
this
(either explicitly
or implicitly), then it can be a class method. (Otherwise, it's
an instance method)
java.lang.Math
:
max
, round
, pow
,
sqrt
, ...
java.lang.Integer
:
parseInt
, toBinaryString
, toHexString
,...
java.lang.String
:
format
,...java.util.Arrays
:
copyOf
, binarySearch
, fill
,...
main
methodmain
!public static void main(String[] args) { for (int i = 0; i < args.length; i = i + 1) { System.out.println(args[i] + " "); } }
main
method
main
method can be the test-driver for the
class
main
method
into a separate class definition (like we have done), to reduce
clutter
JUnit