Java do-while循环不起作用

时间:2012-12-26 18:28:08

标签: java loops do-while

我希望我的程序继续问这个问题,直到得到它可以使用的响应,特别是从0到20的数字。我在这个类上有很多其他的东西,所以这里有一个小的摘录虽然是(我已经将变量和所有内容命名为一切)。

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

3 个答案:

答案 0 :(得分:4)

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)

答案 1 :(得分:3)

您在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);

答案 2 :(得分:0)

你也可以这样做:

if(!work) {break;}