我的循环无法识别它需要退出。 任何帮助表示赞赏。
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
String name;
int residentLoopNumber = 0;
boolean ifResidentFound = false;
boolean ifUserQuit;
Resident[] residents = new Resident[6];
residents[1] = new Resident("Kelly Ocean", "72", "female", "102", "C", false);
residents[2] = new Resident("Sean White", "99", "male", "302", "A", true);
residents[3] = new Resident("Elias Abiadal", "66", "male", "666", "A", true);
residents[4] = new Resident("Terry Goldsmith", "94", "male", "471", "B", false);
residents[5] = new Resident("Sarah Young", "90", "female", "111", "C", true);
//prompting user to enter resident name
System.out.print("Please enter a resident's name: ");
name = kbd.nextLine();
//checking if user entered exit keyword
ifUserQuit = ifQuit(name);
do {
//checking if entered name matches any in the list.
for (int i = 1; i < residents.length; ++i) {
if (residents[i].getName().toLowerCase().equals(name.toLowerCase())) {
residentLoopNumber = i;
ifResidentFound = true;
}
}
//loop prompting user to enter name again
while (!ifResidentFound) {
System.out.println("<" + name + ">" + " is not on record.");
System.out.print("Please enter a resident's name: ");
name = kbd.nextLine();
ifUserQuit = ifQuit(name);
}
for (int i = 1; i < residents.length; ++i) {
if (residents[i].getName().toLowerCase().equals(name.toLowerCase())) {
residentLoopNumber = i;
ifResidentFound = true;
}
}
//displaying resident information
System.out.print(residents[residentLoopNumber].toString());
} while (!ifUserQuit);
}
public static boolean ifQuit(String input) {
return input.toLowerCase().equals("exit");
}
}
如果用户输入&#39;退出&#39;我的循环应该结束 但相反,我在输入退出时得到此输出。有什么想法吗?
请输入居民姓名:退出 没有记录在案。 请输入居民姓名:
答案 0 :(得分:3)
while
循环中没有任何内容可以更改条件变量。您需要在循环中的某个位置设置ifResidentFound = true
以退出它。看起来您需要将for
循环放在while
循环中。