Create a static variables in the Name class that can be used to show the average length of all Names created from this class.
// Describe objects that have a first and last name, and an optional
// middle name.
class Name {
private String first; // First name
private String middle; // Middle name, or null if none
private String last; // Last name
private static int numNames = 0; // Number of Names created
private static int totalLength = 0; // Total length of all Names
// Make me with first name f, last name l, and no middle name.
public Name (String f, String l) {
this.first = f;
this.last = l;
totalLength += (this.first+this.last).length();
numNames++;
}
// Make me with first name f, middle name m, and last name l.
public Name (String f, String m, String l) {
this(f, l); // calls the other constructor
this.middle = m;
totalLength += (this.middle).length();
}
// Return my first, middle, last names as a String.
public String toString() {
String result = this.first;
if (this.middle != null) {
result = result + " " + this.middle;
}
result = result + " " + this.last;
return result;
}
// Return average name length
public static double getAveLength() {
return (double)totalLength/numNames;
}
// Return true if my names are the same as
// n's, false otherwise.
public boolean equals (Name n) {
return this.first.equals (n.first) &&
this.last.equals(n.last) &&
equals(this.middle, n.middle);
}
// Return true if both s1 and s2 are null, or if
// s1 and s2 have the same contents.
private static boolean equals (String s1,String s2){
return (s1 == null && s2 == null) ||
(s1 != null && s1.equals(s2));
}
public static void test () {
Name n1 = new Name ("Fred", "Smith");
Name n2 = new Name ("Jane", "Amy", "Doe");
System.out.println ("Average name length: " + Name.getAveLength());
n1 = new Name ("Jim", "Edward", "Banks");
System.out.println ("Average name length: " + Name.getAveLength());
}
public static void main (String[] args) {
Name.test();
}
}
Average name length: 11.0