【问题标题】:Java do-while loop isn't workingJava do-while 循环不起作用
【发布时间】:2012-12-26 18:28:08
【问题描述】:

我希望我的程序一直问这个问题,直到它得到它可以使用的响应,特别是从 0 到 20 的数字。我在这门课上有很多其他的东西,所以这里有一个小摘录,其中 do- while 是(我已经命名了变量和所有内容)。

public static void main(String[] args) {
    do {
        halp = 1;
        System.out.println("What level is your fort?");
        Scanner sc = new Scanner(System.in);

        try { 
            fortLevel = Integer.parseInt(sc.nextLine()); 
        }
        catch(NumberFormatException e){System.out.println("Numbers only, 0-20"); halp = 0;
    }

    if(halp < 1) {
        work = false;
    }

    if(halp > 1) {
        work = true;
    }

    while(work = false);
}

【问题讨论】:

  • 是否有任何理由在循环内创建扫描仪?

标签: java loops do-while


【解决方案1】:
while(work = false); // here you are assigning false to work

应该是

while(work == false); //here you are checking if work is equal to false
  • = 用于赋值的赋值运算符
  • == 一个相等运算符,用于检查两个操作数是否具有相同的值。

由于工作是布尔值,您甚至可以使用它:

while(!work)

【讨论】:

    【解决方案2】:

    您在 while 表达式中使用了赋值:

    while(work = false);
    

    你可以替换为

    while(work == false);
    

    或更好

    while(!work);
    

    如果变量 halpwork 没有在其他任何地方使用,它们可以被消除给你:

    do {
       System.out.println("What level is your fort?");
       Scanner sc = new Scanner(System.in);
       try {
        fortLevel = Integer.parseInt(sc.nextLine());
       } catch (NumberFormatException e) {
         System.out.println("Numbers only, 0-20");
       }
    
    } while (fortLevel < 0 || fortLevel > 20);
    

    【讨论】:

    • 我已经这样做了,但它仍然输入“仅数字,0-20”,然后不允许我重新输入 sc
    • 您将halp 设置为1 这使得work true 所以您立即退出循环。
    【解决方案3】:

    你也可以这样做:

    if(!work) {break;}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2020-11-26
      • 2022-12-12
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多