Java do-while loop isn't working

这一生的挚爱 提交于 2019-12-20 05:57:25

问题


I want my program to keep asking the question until it gets a response it can use, specifically a number from 0 to 20. I have a lot of other stuff on this class, so here is a small excerpt where the do-while is (I have named the variables and all that for everything).

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

回答1:


You are using an assignment in your while expression:

while(work = false);

You can replace with

while(work == false);

or better

while(!work);

If variables halp and work are not used anywhere else, they could be eliminated giving you:

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:


while(work = false); // here you are assigning false to work

should be

while(work == false); //here you are checking if work is equal to false
  • = an assignment operator used to assign value
  • == an equality operator used to check if two operands have same value.

As work is boolean you could even just use this:

while(!work)



回答3:


You could also do this:

if(!work) {break;}


来源:https://stackoverflow.com/questions/14044591/java-do-while-loop-isnt-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!