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?
statichorizontalLine:
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