我正在研究这个程序,它无限地询问汽车的型号,直到人输入0来打破循环。当我运行它并输入一个数字时,它只是无限循环,你的汽车有缺陷或没有缺陷,直到它崩溃。我现在非常困难,任何帮助都会非常感激。
Scanner input = new Scanner(System.in);
System.out.print("Enter a model number or 0 to quit: ");
modelNum = input.nextInt();
while (modelNum != 0) {
if (modelNum >= 189 && modelNum <= 195) {
System.out.println("Your car is defective it must be repaired");
} else if (modelNum == 189 || modelNum == 221) {
System.out.println("Your car is defective it must be repaired");
} else if (modelNum == 780) {
System.out.println("Your car is defective it must be repaired");
} else if (modelNum == 119 || modelNum == 179) {
System.out.println("Your car is defective it must be repaired");
} else {
System.out.println("Your car is not defective");
}
if (modelNum == 0) {
System.out.println("end");
break;
}
}
这是因为你永远不会要求用户提供其他输入。你应该在循环结束之前这样做。
将此部分包含在循环中:
Scanner input = new Scanner(System.in);
System.out.print("Enter a model number or 0 to quit: ");
modelNum = input.nextInt();
您必须要求评估新值:
while (modelNum != 0) {
// if conditions
modelNum = input.nextInt();
}
另请注意:
if (modelNum == 0) {
System.out.println("end");
break;
}
将不是必需的,因为如果最后一个值是0
,则while循环中的条件将为false并且不会再次循环。
最后一件事:为什么你有所有那些if-else-如果他们都做同样的事情(打印“你的车有缺陷必须修理”)。这就足够了:
while (modelNum != 0) {
if ((modelNum >= 189 && modelNum <= 195) || modelNum == 221 || modelNum == 780 || modelNum == 119 || modelNum == 179) {
System.out.println("Your car is defective it must be repaired");
} else {
System.out.println("Your car is not defective");
}
modelNum = input.nextInt();
}
如果输入0,循环将中断,因此最后一个if语句将永远不会运行。
此循环只是告诉您汽车是否有缺陷,具体取决于型号,但如果汽车有缺陷,您永远不会告诉程序退出循环。为此,您必须将break语句放入循环的每个if语句中。
而且这句话没用:
if(modelNum == 0)
{
System.out.println("end");
break;
因为如果你输入0,循环将无法启动。