Java 而循环即使在条件要求时也不会停止
我的循环无法识别它需要退出。 感谢您的帮助Java 而循环即使在条件要求时也不会停止,java,loops,while-loop,boolean,Java,Loops,While Loop,Boolean,我的循环无法识别它需要退出。 感谢您的帮助 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 Res
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");
}
publicstaticvoidmain(字符串[]args){
扫描仪kbd=新扫描仪(System.in);
字符串名;
int residentLoopNumber=0;
布尔值ifResidentFound=false;
布尔ifUserQuit;
居民[]居民=新居民[6];
居民[1]=新居民(“凯利海洋”,“72”,“女性”,“102”,“C”,假);
居民[2]=新居民(“肖恩·怀特”、“99”、“男性”、“302”、“A”,真);
居民[3]=新居民(“Elias Abiadal”、“66”、“男性”、“666”、“A”,真);
居民[4]=新居民(“Terry Goldsmith”、“94”、“男”、“471”、“B”、假);
居民[5]=新居民(“Sarah Young”、“90”、“女性”、“111”、“C”,真);
//提示用户输入居民姓名
System.out.print(“请输入居民姓名:”);
name=kbd.nextLine();
//检查用户是否输入了退出关键字
ifUserQuit=ifQuit(名称);
做{
//检查输入的名称是否与列表中的任何名称匹配。
对于(int i=1;i<0.length;++i){
if(常驻[i].getName().toLowerCase().equals(name.toLowerCase())){
residentLoopNumber=i;
ifResidentFound=true;
}
}
//循环提示用户再次输入名称
而(!ifResidentFound){
System.out.println(“+”未记录在案。”);
System.out.print(“请输入居民姓名:”);
name=kbd.nextLine();
ifUserQuit=ifQuit(名称);
}
对于(int i=1;i<0.length;++i){
if(常驻[i].getName().toLowerCase().equals(name.toLowerCase())){
residentLoopNumber=i;
ifResidentFound=true;
}
}
//显示居民信息
System.out.print(常驻[residentLoopNumber].toString());
}而(!ifUserQuit);
}
公共静态布尔ifQuit(字符串输入){
返回input.toLowerCase().equals(“exit”);
}
}
如果用户进入“退出”,我的循环应该结束
但是,当输入exit时,我得到这个输出。有什么想法吗
请输入居民姓名:退出
没有记录在案。
请输入居民的姓名:while循环中没有更改条件变量的内容。您需要在循环中的某个点设置
ifResidentFound=true
,以退出循环。看起来您需要将for
循环放入while
循环中。我的while循环应该在这种情况下迭代while(!ifUserQuit)代码>我有一行代码ifUserQuit=ifQuit(name)
每次输入后,都应该更新“ifUserQuit”的值,该值来自布尔方法“ifQuit(name)”,如果用户输入“exit”,则该方法设置为返回true@MishI认为您误解了此处没有退出哪个循环。do循环中的while循环是一个永远不会退出的循环ifResidentFound
是您的条件,它在该循环中永远不会更改。my while循环不在my for循环中。我的for循环甚至在显示输出之前就结束了。你能解释一下这是什么意思吗?ifResidentFound
与程序的循环没有任何关系,它只检查是否在我的对象数组中找到了用户