2015-10-31 3 views
-3

У меня возникли проблемы с пониманием кода на Java. Я исследовал, но мне все еще трудно понять это.While Loop Statement

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

Часть я застрять на это while(!showShip) часть. Что означает это утверждение?

+3

Можете ли вы быть более точным, о котором часть этого кода для вас непонятно? Знаете ли вы, как работают циклы while? Вы знаете, что делает оператор '!'? – Pshemo

+0

Да, я понимаю, что в этом контексте '(A! = B) истинно'. Но я не понимаю это в контексте вопроса –

+2

Интересно, что такое «исследуемое» означает в вашем случае. Поиск Google не является хорошим способом для повторного использования которые включают знаки препинания, такие как '!', поскольку Google игнорирует большинство знаков препинания. Однако, когда вы говорите «исследование», это должно включать проверку документации. – RealSkeptic

ответ

2
while(!showShip) // don't get this while loop 

Использование ! инвертирует boolean, поэтому условие цикла короткий способ сказать

while(showShip == false) // This is the long way 

Конечно, чтобы выйти из цикла, вы должны установить showShip в true, но тело вашей петли никогда не делает этого. Поэтому цикл бесконечный. Скорее всего, намерение было сделать

System.out.println("\n" +" BOOM!"); 
showShip = true; 

Примечание: короткий путь, чтобы написать «по-прежнему в то время как переменная true является

while (showShip) // skip the == true part 
+0

Спасибо, большой ответ, очень ценится. –

3

showShip - булева переменная, что означает, что она может быть либо true, либо false. while(!showShip) означает, что цикл while должен сохранять циклическое (повторяющееся) значение до тех пор, пока значение showShip равно false.

+0

Спасибо за помощь. –