2016-12-20 2 views
0

В настоящее время я изучаю выпускные экзамены на Java и хочу получить второе мнение о чем-то. (Некоторые из вас помнят меня день или два назад) Во всяком случае, вопрос о экзаменационными гласит:Неоднозначная петля на практике

Что такое ошибка в коде?

boolean good = true 
while(good = true){ 
//do stuff 
} 

Я чувствую, что это вопрос с подвохом, как очевидный ответ будет, что это бесконечный цикл; однако мы не знаем, какой код будет внутри цикла, поэтому потенциально может быть оператор break или какая-либо другая форма выхода из цикла. Для моего ответа я написал, что условие не обязательно должно быть экземпляром, оно может просто читать «while (good) {»
Что вы думаете? Большое вам спасибо.

+3

Опечатка, вам нужно ';' after' = true; ' –

+1

Я не чувствую, что этот вопрос может дать окончательный ответ. Если вопрос был неоднозначным на вашем практическом экзамене, он также будет двусмысленным в отношении SO. – 4castle

+1

'good = true' - это задание и даст вам всегда правду независимо от начального значения' good' ... в противном случае yep это бесконечный цикл. – Plirkee

ответ

5

while (good = true) - бесконечный цикл. Он присваивает true по номеру good и затем оценивает true. Правильный цикл будет while (good == true)илиwhile (good)

+2

Эта проблема заключается в том, что это не ошибка компилятора. Мы можем только предположить, что это логическая ошибка, но, не зная кода внутри цикла и того, что предполагаемое поведение, 'good = true', может быть просто способом сбросить флаг перед каждой итерацией. – 4castle

0

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

Это именно по этой причине многие профессиональные разработчики будут писать свои заявления назад как

while (true == good) 
vs 
while (good == true) 

и

if (null == a) 
vs 
if (a == null) 

Причина в том, в случае опечатка, например, один отвечал в вашем вопросе, оба

while (true = good) 
if (null = a) 

вызовет ошибки компилятора, поскольку вы пытаетесь присвоить значение константе.

Смежные вопросы