ユーザー名データベースの文字列一致アルゴリズムを実装しています。私の方法は、既存のユーザー名データベースと、その人が望む新しいユーザー名を取得し、ユーザー名が使用されているかどうかを確認します。それが取得された場合、メソッドはデータベースで取得されていない番号でユーザー名を返すことになっています。
例:
「ジャスティン」、「ジャスティン1」、「ジャスティン2」、「ジャスティン3」
「ジャスティン」と入力
return: "Justin4" は、1 から 3 までの数字を持つ Justin と Justin が既に使用されているためです。
以下のコード サンプルでは、newMember
Justin1 が既に存在するにもかかわらず返されます。どこが間違っているのでしょうか。
public class UserName {
static int j = 0;
static String newMember(String[] existingNames, String newName){
boolean match = false;
for(int i = 0; i < existingNames.length; i++){
if(existingNames[i] == (newName)){
match = true;
}
}
if(match){
j++;
return newMember(existingNames, newName + j);
}
else{
return newName;
}
}
public static void main(String[] args){
String[] userNames = new String[9];
userNames[0] = "Justin1";
userNames[1] = "Justin2";
userNames[2] = "Justin3";
userNames[3] = "Justin";
System.out.println(newMember(userNames, "Justin"));
// I don't understand why it returns Justin1 when the name is already taken
// in the array.
}
}