Question: I don't know why my normalize method is not passing the public test. public class Passport { private String firstname; private String middlename; private String

I don't know why my normalize method is not passing the public test.
public class Passport {
private String firstname;
private String middlename;
private String lastname;
private char separator =','; // Default separator
private StringBuffer stamps;
private static int objectCount =0;
// Constructor with firstname, middlename, and lastname
public Passport(String firstname, String middlename, String lastname){
this.firstname = validateAndFormat(firstname);
this.middlename = middlename.isBlank()?"" : validateAndFormat(middlename); // Check for blank middle name
this.lastname = validateAndFormat(lastname);
// If any of the names are invalid, do not proceed with initialization
if (this.firstname == null || this.lastname == null){
return;
}
this.stamps = new StringBuffer(); // Initialize stamps
objectCount++; // Increment object count
}
// Constructor with firstname and lastname only, middle name is empty
public Passport(String firstname, String lastname){
this(firstname,"", lastname); // Call the three-argument constructor
}
// Default constructor, uses default names
public Passport(){
this("SAMPLEFIRSTNAME", "SAMPLEMIDDLENAME", "SAMPLELASTNAME"); // Call the three-argument constructor
}
// Copy constructor
public Passport(Passport passport){
this.firstname = passport.firstname;
this.middlename = passport.middlename;
this.lastname = passport.lastname;
this.separator = passport.separator;
this.stamps = new StringBuffer(passport.stamps); // Copy stamps
objectCount++; // Increment object count
}
// toString method
@Override
public String toString(){
String result = lastname + separator + firstname;
if (!middlename.isEmpty()){
result += separator + middlename;
}
return result;
}
// Method to add a stamp to the passport
public Passport addStamp(String stamp){
if (stamp != null && !stamp.isBlank()){
stamps.append(stamp);
}
return this; // Return the current object
}
// Get a copy of the stamps
public StringBuffer getStamps(){
return new StringBuffer(stamps); // Return a copy of the stamps
}
// Get the separator
public char getSeparator(){
return separator;
}
// Set the separator, ensuring the provided separator is valid
public boolean setSeparator(char separator){
if (separator =='@'|| Character.isSpaceChar(separator)|| Character.isLetter(separator)){
return false; // Invalid separator
}
this.separator = separator;
return true;
}
// Equals method to compare two Passport objects
@Override
public boolean equals(Object obj){
if (this == obj) return true;
if (obj == null || getClass()!= obj.getClass()) return false;
Passport passport =(Passport) obj;
return firstname.equals(passport.firstname) &&
middlename.equals(passport.middlename) &&
lastname.equals(passport.lastname);
}
// CompareTo method to compare passports alphabetically
public int compareTo(Passport passport){
int lastNameComparison = lastname.compareToIgnoreCase(passport.lastname);
if (lastNameComparison !=0) return lastNameComparison;
int firstNameComparison = firstname.compareToIgnoreCase(passport.firstname);
if (firstNameComparison !=0) return firstNameComparison;
return middlename.compareToIgnoreCase(passport.middlename);
}
// Get the number of Passport objects created
public static int getNumberOfPassportObjects(){
return objectCount;
}
// Reset the number of Passport objects created
public static void resetNumberOfPassportObjects(){
objectCount =0;
}
// Normalize the passport (uppercase or lowercase)
public static Passport normalize(Passport passport, boolean uppercase){
if (passport == null) return null;
String newFirstName = uppercase ? passport.firstname.toUpperCase() : passport.firstname.toLowerCase();
String newMiddleName = uppercase ? passport.middlename.toUpperCase() : passport.middlename.toLowerCase();
String newLastName = uppercase ? passport.lastname.toUpperCase() : passport.lastname.toLowerCase();
Passport normalizedPassport = new Passport(newFirstName, newMiddleName, newLastName);
normalizedPassport.setSeparator(passport.getSeparator()); // Preserve the separator
return normalizedPassport;
}
normalize
public static Passport normalize(Passport passport,
boolean uppercase) method will return null and perform no processing.
Parameters: \(\square \)
passport - Passport reference.
uppercase - If true turn to uppercase; otherwise l ```
Driver
public class Driver {
public static void main(String[] args){
Passport.resetNumberOfPassportObjects();
Passport passport1= new Passport("claudia", "I.", "smith");
System.out.println(passport1);
Passport passport2= new Passport("John", "RoberTs");
System.out.println(passport2);
Passport passport3= new Passport();
System.out.println(passport3);
System.out.println("=============");
passport1.addStamp("Spain");
passport1.addStamp("London");
System.out.println("Stamps for "+ passport1+"-->"+ passport1.getStamps());
passport1.setSeparator('#');
System.out.println(passpo ```
@Test
public v
I don't know why my normalize method is not

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!