有人可以帮我弄清楚为什么while语句不起作用?在i = 3之后循环确实停止但是如果continueSurvey = 0则不会停止。它运行但如果我将continueSurvey更改为O则不会退出循环。即使我进入进程并且我可以看到变量是0,循环继续。
import java.util.Scanner;
public class SurveyConductor
{
public static void main(String[] args)
{
Survey a = new Survey();
a.display();
a.enterQuestions();
int continueSurvey = 1;
int i = 0;
while ((continueSurvey != 0) && (i < 3))
{
for (int row = a.getRespID(); row < 3; row++)
{
System.out.println("Respondent " + (row+1) + " Please tell us how you would rate our: ");
for (int col = 0; col < 3; col++)
{
Scanner input = new Scanner(System.in);
System.out.println(a.presentQuestion(col) + ": ");
System.out.println("Enter your response (1-Strongly Disagree, 2-Disagree, 3-Neutral, 4-Agree, 5-Strongly Agree): ");
int response = input.nextInt();
if ((response < 1) || (response >5))
{
while ((response < 1) || (response > 5))
{
System.out.println("Your response must be between 1 and 5. Please try again.");
System.out.println(a.presentQuestion(col) + ": ");
System.out.println("Enter your response (1-Strongly Disagree, 2-Disagree, 3-Neutral, 4-Agree, 5-Strongly Agree): ");
response = input.nextInt();
}
}
a.logResponse(row,col,response);
System.out.println();
}
a.displaySurveyResults();
System.out.println();
System.out.println("The top rated question is Question #" + a.topRatedQuestion() + ".");
System.out.println("The bottom rated question is Question #" + a.bottomRatedQuestion() + ".");
System.out.println();
Scanner input2 = new Scanner(System.in);
System.out.println("Are there any more repondents (0 - No, 1 - Yes): ");
continueSurvey = input2.nextInt();
a.generateRespondentID();
i++;
}
}
}
}
答案 0 :(得分:2)
您需要在break
循环中添加for
。 IE,
if(continueSurvey == 0)
break;
这将退出for
循环并允许while
循环退出。
答案 1 :(得分:0)
您询问用户是否要继续的部分位于此for循环
中for (int row = a.getRespID(); row < 3; row++)
不只是你的while循环。这意味着它会一直询问,直到for循环完成,只有当它最终回到while循环条件时才会退出。
答案 2 :(得分:0)
你在while循环中的条件是:
((continueSurvey != 0) && (i < 3))
这意味着当且仅当continueSurvey!= 0且i <1时,才会执行while循环的内部块。 3在同一时间。你有内环,有不同的条件。我会使用调试器在内部循环中搜索问题。如果这个答案对你来说还不够,那么请说明你想要达到的目标。
答案 3 :(得分:-1)
如果你想要在continueSurvey为0或i = 3时退出循环 你必须像这样编写while循环:
while((continueSurvey != 0) || (i < 3)) {
...
}
&amp;&amp;&amp; (和)运算符表示两个条件都必须为真,以便循环不退出其中一个(||或)。