正在为用户名数据库实现字符串匹配算法。我的方法采用现有的用户名数据库和该人想要的新用户名,并检查用户名是否被使用。如果采用该方法,则该方法应该返回带有数据库中未采用的数字的用户名。
例子:
“贾斯汀”、“贾斯汀 1”、“贾斯汀 2”、“贾斯汀 3”
输入“贾斯汀”
返回:“Justin4”,因为 Justin 和 Justin 的数字 1 到 3 已经被占用。
在下面的代码示例中,newMember 返回 null,我不知道为什么。它应该返回“justin4”
public class UserName {
static String newMember(String[] existingNames, String newName){
boolean found = false;
boolean match = false;
String otherName = null;
for(int i = 0; i < existingNames.length;i++){
if(existingNames[i].equals(newName)){
found = true;
break;
}
}
if(found){
for(int x = 1; x < 100 ; x++){
for(int i = 0; i < existingNames.length;i++){
if(existingNames[i].equals(newName + x))
match = true;
}
if(!match)
otherName = newName + x;
}
// It returns NULL instead of "Justin4". Its as if otherName doesn't
// change after its initialization.
return otherName;
} else return newName;
}
public static void main(String[] args){
String[] userNames = new String[4];
userNames[0] = "Justin1";
userNames[1] = "Justin2";
userNames[2] = "Justin3";
userNames[3] = "Justin";
System.out.println( newMember(userNames, "Justin"));
}
}