I am having trouble understanding some code in Java. I have researched around but I am still having trouble fully understanding it.
boolean showShip = false; //set the ship to be hidden by default
while(!showShip) //dont get this while loop
{
val = promptForInt("\n" + "Guess again. ");
if(val == randomShipLocation)
{
System.out.println("\n" +" BOOM!");
showShip = false;
riverLength[val] = 1; // mark a hit
}
else {
riverLength[val] = -1; // mark a miss
}
displayRiver(riverLength, showShip);
}
The part I am getting stuck on is the while(!showShip)
part. What does this statement mean?
while(!showShip) // don't get this while loop
Using !
inverts the boolean
, so the loop condition is a short way of saying
while(showShip == false) // This is the long way
Of course in order to exit the loop you need to set showShip
to true
, but the body of your loop never does it. Therefore, the loop is infinite. Most likely, the intention has been to do
System.out.println("\n" +" BOOM!");
showShip = true;
Note: A short way to write "continue while a variable is true
is
while (showShip) // skip the == true part