Java — Поиск элемента в массиве

#java #arrays #indexing

#java #массивы #индексирование

Вопрос:

В настоящее время я пытаюсь выяснить, как выполнить поиск в моем массиве для поиска определенного элемента в массиве. Пользователь введет имя, которое он хочет найти, и моя программа должна вернуть пользователю место, на котором он сидит. Добавление пассажиров выполняется с помощью другого метода. Итак, если бы у меня был кто-то по имени «Тим Джонс», сидящий на месте 5, если бы я использовал этот метод, я бы ввел «Тим Джонс», и программа должна была сообщить мне, что Тим Джонс сидит на месте 5.

Текущий вывод, который я получаю, — это просто оператор else, пассажир не найден, что бы я ни пытался. Есть какие-нибудь советы? Заранее спасибо.

 private static void findPassengerSeat(String airplaneRef[]) {
    String passengerName;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter passenger's name."); // asks user for passenger name.
    passengerName = input.next(); // user input stored under variable passengerName.
    for (int i = 0; i < airplaneRef.length; i  ) { // for i, if i is less than the length of the array airplaneRef, increment i.
        if (airplaneRef[i].equalsIgnoreCase(passengerName)) { // iterates through all elements in the array, ignoring case sensitivity and looks for the passenger.
            int seat = i;
            System.out.println(passengerName   " is sitting in seat s"   seat); // prints name of passenger and what seat they are sitting in.
        } else {
            System.out.println("Passenger not found.");
            break;
        }
    }
}
  

Комментарии:

1. У вас может быть Tim в вашем массиве, но из-за использования next вместо nextLine Tim Jones у вас нет.

2. Вот почему вы должны научиться использовать отладчик.

Ответ №1:

Вы должны избавиться от else в противном случае вы оцениваете только первый индекс вашего массива и передаете все остальные.

Следующее должно сделать свое дело: вы в основном просматриваете список всех пассажиров, и только если ни один из них не соответствует входным данным, вы заявляете, что пассажир не найден.

 for (int i = 0; i < airplaneRef.length; i  ) { // for i, if i is less than the length of the array airplaneRef, increment i.
    if (airplaneRef[i].equalsIgnoreCase(passengerName)) { // iterates through all elements in the array, ignoring case sensitivity and looks for the passenger.
        int seat = i;
        System.out.println(passengerName   " is sitting in seat s"   seat); // prints name of passenger and what seat they are sitting in.
        return;
    }
}
System.out.println("Passenger not found.");