【问题标题】:Looping if and else statements in java在java中循环if和else语句
【发布时间】:2019-10-30 05:11:15
【问题描述】:

我正在开发这个程序,它会无限地询问汽车的型号,直到人们输入 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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      将此部分包含到您的循环中:

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

      【讨论】:

      • 谢谢你,我之前在我的循环中,但很困惑为什么它没有初始化,也许是因为我没有在我的变量中初始化它哈哈谢谢!
      【解决方案3】:

      您必须要求评估一个新值:

      while (modelNum != 0) {
          // if conditions
          modelNum = input.nextInt();
      }
      

      还要注意:

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

      没有必要,因为如果最后一个值为 0,while 循环中的条件将为 false,并且不会再次循环。

      最后一件事:为什么你有所有这些 if-else-if 而他们都做同样的事情(打印“你的车有缺陷,必须修理”)。这样就足够了:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 没错,但实际上不是这个问题的答案。
        【解决方案5】:

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

        而且这种说法是没有用的:

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

        因为如果你输入 0 循环将不会开始。

        【讨论】:

        • 问题与在每个 if 语句中放置 break 语句无关。如果你这样做,那么 while 循环将只迭代一次,这不是 OP 所要求的。
        • @JuanCarlosMendoza 你是对的,我误读了问题的第一部分,但我认为如果汽车有缺陷,他也希望他的循环停止,因为他写道:“当我运行它并输入一个数字,它只是无限循环您的汽车有缺陷或没有缺陷,直到它崩溃”
        • “我正在开发这个程序,该程序无限地询问汽车的型号,直到人们输入 0。如果你放一个 break 语句,这不会是无限的。
        猜你喜欢
        • 2017-02-17
        • 2015-10-28
        • 2016-10-22
        • 1970-01-01
        • 2016-07-23
        • 2012-06-18
        • 1970-01-01
        • 1970-01-01
        • 2015-11-08
        相关资源
        最近更新 更多