【发布时间】:2020-02-14 01:34:02
【问题描述】:
只想跳出这个while循环。当我认为条件不会中断时,它不会中断,但它确实会被后续的 if 语句注册。
String current_Class_Name = "";
int current_Class_Rating;
while(!current_Class_Name.equals("Done")) {
// * Get class name.
System.out.println("What class are you rating?");
current_Class_Name = in.nextLine();
// *
// if(current_Class_Name.equals("Done")) {
// System.out.println("Detected 'Done'");
// break;
// }
// * Get class rating.
System.out.println("How many plus signs does " + current_Class_Name + " get?");
current_Class_Rating = Integer.parseInt(in.nextLine());
// * If user inputs an invalid rating (not a value between 0-5),
// * keep prompting them until they enter a valid input.
while(current_Class_Rating > 5 || current_Class_Rating < 0) {
System.out.println("Sorry, but you can only give a rating of 0-5.");
System.out.println("How many plus signs does " + current_Class_Name + " get?");
current_Class_Rating = Integer.parseInt(in.nextLine());
}
// * TODO
// * Add to STRING and INTEGER LISTS.
}
可能是某种调用顺序问题,因为进入 while 循环时字符串为“空”。 抱歉有任何格式。
感谢所有帮助。
注意:我通常使用 C#,据我记得,while 循环会在完成整个迭代之前尝试检测条件情况。
编辑:if 语句不在那里运行,而只是证明两件事:1)可以检测到中断条件,2)在给定时间中断。
编辑:更新以显示所有考虑的代码。
【问题讨论】:
-
它确实像你的
if一样工作,我只能假设你在if之后的循环体中有更多 代码。这将继续评估,直到再次测试循环条件(即当while在主体完成后评估时)。 -
当 current_Class_Name 为“Done”时,您永远不会给
while条件检查条件,因为当 while 会检查条件。 -
更新了帖子,考虑了几乎所有代码,并删除了一些误导性/令人困惑的细节。
-
“据我所知,while 循环会在完成整个迭代之前尝试检测条件情况” — 不……它会检查条件 on 进入循环。如果满足条件,则执行整个循环(除非某些原因导致
break),然后您返回到循环的顶部,再次测试条件。 -
完全是@EdwardSuzuki - 或者,您可以使用
do { ... } while (condition)来保证您至少执行循环体一次,并在迭代的结束 处检查条件。
标签: java while-loop break