Я пишу этот код, который выполняет итерацию по arrayylist, и если найдено имя, равное getName, он напечатает его, а если не найден, напечатает «сообщение». Моя проблема с этим кодом:

Если у человека такой же номер, как у другого, программа остановится при первом совпадении из-за перерыва; как я могу это исправить?

import java.util.*;

public class AggPersone {
    public static void main(String[] args) {


    ArrayList<Item> voce = new ArrayList<Item>();

    voce.add(new Item("Robert", "Via qualcosa", "123"));
    voce.add(new Item("Roberto","Via qualcosina", "123"));
    voce.add(new Item("Robert", "Via qual ", "2222"));

    Scanner input = new Scanner(System.in);
    System.out.println("chi cerchi?");
    String chiave = input.nextLine();

    int i = 0;
    while(i < voce.size()){
        if(voce.get(i).getNome().equals(chiave)){
            System.out.println(voce.get(i).toString());
            break;
        }

        i++;

        if(i == voce.size()){
            System.out.println("Nessun match");
        }
    }

    input.close();
}

}
0
Uruma 24 Июн 2016 в 16:22
1
Удалите оператор break в вашем цикле, он распечатает их все ...
 – 
StackFlowed
24 Июн 2016 в 16:25
1
@StackFlowed: Но вы не обнаружите, если ничего не было найдено.
 – 
Frank Puffer
24 Июн 2016 в 16:32

1 ответ

Лучший ответ

Используйте логическую переменную, чтобы отметить, найдено ли имя:

boolean found = false;
for (Item item : voce) {
    if(item.getNome().equals(chiave)){
        System.out.println(item.toString());
        found = true;
    }
}

if (!found) {
    System.out.println("Nessun match");
}
0
Frank Puffer 24 Июн 2016 в 16:27