0
public void searchLastName(String lastName)
{
    int size = list.size();

    for(int i = 0 ; i < size ; i++)
    {
        if(list.get(i).getLastName().equals(lastName))
            System.out.print(lastName+ " is located at " +i);
        else
            System.out.println("Cant find at loc:" +i);

    }
}

このコードに問題はありますか?? lastName を検索できません。助けてください

これはクラス Person からのものです

public String getLastName() { return lastName; }

4

1 に答える 1

0

コードの問題点は、一部の場所が一致する場合でも、一致しないすべての場所に対して「見つかりません...」というメッセージが出力されることです。おそらくそれがあなたが望むものです。ただし、 が見つかった 1 つの場所がlastName必要な場合は、次のようにすることができます。

int found = -1;
for (int i = 0; i < size && found == -1; ++i) {
    if (list.get(i).getLastName().equals(lastName)) {
        found = i;
    }
}
if (found >= 0) {
    System.out.print(lastName+ " is located at " + found);
} else {
    System.out.println("Cant find " + lastName);
}

見つかったすべての場所が必要な場合は、次のようにします。

List<Integer> found = new ArrayList<Integer>();
for (int i = 0; i < size; ++i) {
    if (list.get(i).getLastName().equals(lastName)) {
        found.add(i);
    }
}
if (found.isEmpty()) {
    System.out.println("Cant find " + lastName);
} else {
    System.out.print(lastName+ " is located at " + found.toString());
}
于 2013-03-10T02:09:39.253 に答える