The Java code is structured as follows for the specified task
Explanation:
import java.util.*;
class UserName{
ArrayList<String> potentialNames;
UserName(String first, String last){
if(this.isValid(first) && this.isValid(last)){
potentialNames = new ArrayList<String>();
for(int i=1;i<first.length()+1;i++){
potentialNames.add(last+first.substring(0,i));
}
}else{
System.out.println("first and last names must only contain letters.");
}
}
public boolean isTaken(String name, String[] namesArray){
for(int i=0;i<namesArray.length;i++){
if(name.equals(namesArray[i]))
return true;
}
return false;
}
public void setValidUserNames(String[] takenNames){
String[] names = new String[this.potentialNames.size()];
names = this.potentialNames.toArray(names);
for(int i=0;i<takenNames.length;i++){
if(isTaken(takenNames[i],names)){
int idx = this.potentialNames.indexOf(takenNames[i]);
this.potentialNames.remove(idx);
names = new String[this.potentialNames.size()];
names = this.potentialNames.toArray(names);
}
}
}
public boolean isValid(String str){
if(str.length()==0) return false;
for(int i=0;i<str.length();i++){
if(str.charAt(i)<'a'||str.charAt(i)>'z' && (str.charAt(i)<'A' || str.charAt(i)>'Z'))
return false;
}
return true;
}
public static void main(String[] args) {
UserName user1 = new UserName("john","smith");
System.out.println(user1.potentialNames);
String[] usedNames = {"harta","hartm","harty"};
UserName user2 = new UserName("mary","hart");
System.out.println("available names before deletion: "+user2.potentialNames);
user2.setValidUserNames(usedNames);
System.out.println("available names after deletion: "+user2.potentialNames);
}
}