在java中循环if和else语句

问题描述 投票:0回答:5

我正在研究这个程序,它无限地询问汽车的型号,直到人输入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;
    }
}
java if-statement while-loop
5个回答
3
投票

这是因为你永远不会要求用户提供其他输入。你应该在循环结束之前这样做。


0
投票

将此部分包含在循环中:

Scanner input = new Scanner(System.in);    

   System.out.print("Enter a model number or 0 to quit: ");
   modelNum = input.nextInt(); 

0
投票

您必须要求评估新值:

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();
}

-1
投票

如果输入0,循环将中断,因此最后一个if语句将永远不会运行。


-1
投票

此循环只是告诉您汽车是否有缺陷,具体取决于型号,但如果汽车有缺陷,您永远不会告诉程序退出循环。为此,您必须将break语句放入循环的每个if语句中。

而且这句话没用:

if(modelNum == 0) { System.out.println("end"); break;

因为如果你输入0,循环将无法启动。

© www.soinside.com 2019 - 2024. All rights reserved.