#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.");