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);
}
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);
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)
You could also do this:
if(!work) {break;}
来源:https://stackoverflow.com/questions/14044591/java-do-while-loop-isnt-working