2016-12-03 3 views
-3

Я работаю с циклом while и оператором if.Получение цикла while для продолжения с помощью оператора if

Я хочу, чтобы цикл продолжался, если выполняется инструкция else. По моему мнению, «продолжать»; должен перезапустить цикл, но это не так.

Я нашел одно обходное решение, чтобы исправить это, но установить «cho = 1;». Но действительно ли это необходимо? Есть ли более логичные способы решения этой проблемы?

Спасибо!

while (sum < 21 && cho == 1 && sum != 21) { 
     System.out.println("Do you want to (1)hit or (2) stay?"); 
     cho = scan.nextInt(); 

     if (cho == 1) { 

      getCard(index++); 

      if (sum > 21) { 
       System.out.println("You busted! Dealer wins."); 
       return; 
      } 
     } else if (cho == 2) { 
      System.out.println("Your value is " + sum); 
      sum = playerTotal; 
     } 
     else{ 
      cho = 1; 
      System.err.println("The input value given is not a valid integer"); 
      continue; //Does not restart the loop. 
     } 
    } 
+1

Определить, что «не работает». Когда вы выполняете это в отладчике, что делает * делает это? Операция 'continue' делает именно то, что вы описываете, и, скорее всего, вы допустили логическую ошибку, чем ключевое слово' continue', которое не работает. – David

+0

'continue' WILL повторить цикл, но если ваше состояние изменилось, ваш цикл закончится. – Rogue

+0

Хорошо, я вижу, условие изменяется, когда вход не равен 1 или 2. Я не понял, что условия все еще должны были быть правдой, чтобы продолжить работу, я думал, что это переопределение. Спасибо – Maximus

ответ

0

continue переходит обратно к условию цикла, который затем вычисляется снова. Если условие оценивается как false, цикл, очевидно, не будет запущен снова.

Итак, если вы хотите, чтобы ваш цикл продолжал фактически циклироваться, вы должны убедиться, что условие равно true.

Это означает, что: Вы должны установить cho = 1 и убедитесь sum < 21

Также отметим, что sum != 21 в вашем состоянии не требуется, так как sum < 21 уже исключает такую ​​возможность.

+0

Спасибо, это проясняет многое и действительно решило проблему! Я новичок в программировании, поэтому извините меня за свою лженауку. – Maximus

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