「detele」キーワードが検出されると、プログラムは配列リスト内で一致する名前を検索し、配列リスト内のインデックスを示すインデックス値を返すように設計されており、その後レコードが削除されます。現在、arraylist には「Testing One」という名前のレコードが 1 つありますが、プログラムはその名前を見つけることができません。テストしたところ、プログラムはそのようなレコードがないことを示すために -1 を返しました。しかし、println(personList.get(0).getName()) を使用すると、出力に「Testing One」のようなスペースがあることが示されます。
出力は次のとおりです。
-1
「テストワン」
名前が存在しません。削除に失敗しました!
else if(words[0].equalsIgnoreCase("delete"))
{
if(words.length<2)
{
System.out.println("Please enter the name of record you want to delete");
}
else
{
String name = "";
if(Functions.nameValidation(words[1]))
{
for(int i = 2; i < words.length; i++)
{
name = words[1] + " " + words[i];
}
if(Functions.nameValidation(name))
{
int index = Functions.searchPeopleByName(personList, name);
System.out.println(index);
System.out.println(personList.get(0).getName())
if(index>=0)
{
personList.remove(index);
FileIO.outData(personList, outputFileName);
}
else
{
System.out.println("The name does not exist, please check again");
}
}
else
{
System.out.println("The name is invalid, please check again!!!");
}
}
else
{
System.out.println("The name is invalid, please check again");
}
}
}
public static boolean nameValidation(String name)
{
for (int i = 0; i < name.length(); i++) {
if ((!Character.isLetter(name.charAt(i))) && (name.codePointAt(i) != 32))/*space*/ {
return false;
}
}
return true;
}
public static int searchPeopleByName(ArrayList<Person> personList, String name)
{
for(int i=0; i<personList.size();i++)
{
if(personList.get(i).getName().equalsIgnoreCase(name))
return i;
}
return -1;
}