Response:
Refer to the explanation
Clarification:
import java.util.*;
class UserName{
ArrayList<String> potentialNames;
UserName(String fName, String lName){
if(this.isValidName(fName) && this.isValidName(lName)){
potentialNames = new ArrayList<String>();
for(int j=1;j<fName.length()+1;j++){
potentialNames.add(lName+fName.substring(0,j));
}
}else{
System.out.println("firstName and lastName should only consist of letters.");
}
}
public boolean isTaken(String name, String[] array){
for(int j=0;j<array.length;j++){
if(name.equals(array[j]))
return true;
}
return false;
}
public void removeUnavailableUserNames(String[] takenNames){
String[] namesArray = new String[this.potentialNames.size()];
namesArray = this.potentialNames.toArray(namesArray);
for(int j=0;j<takenNames.length;j++){
if(isTaken(takenNames[j],namesArray)){
int idx = this.potentialNames.indexOf(takenNames[j]);
this.potentialNames.remove(idx);
namesArray = new String[this.potentialNames.size()];
namesArray = this.potentialNames.toArray(namesArray);
}
}
}
public boolean isValidName(String str){
if(str.length()==0) return false;
for(int j=0;j<str.length();j++){
if(str.charAt(j)<'a'||str.charAt(j)>'z' && (str.charAt(j)<'A' || str.charAt(j)>'Z'))
return false;
}
return true;
}
public static void main(String[] args) {
UserName user1 = new UserName("john","smith");
System.out.println(user1.potentialNames);
String[] existing = {"harta","hartm","harty"};
UserName user2 = new UserName("mary","hart");
System.out.println("potentialNames prior to removal: "+user2.potentialNames);
user2.removeUnavailableUserNames(existing);
System.out.println("potentialNames following removal: "+user2.potentialNames);
}
}