2010-03-05 2 views
0

У меня есть цикл, предназначенный для проверки ввода пользователя на вопрос, он работал нормально, пока я не добавил это;unreachable statement

 if (userInput.charAt(0) > NUMCOLS && userInput.charAt(0) < 0); 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

до этого

 if (userInput.charAt(2) !='-') 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

Теперь всякий раз, когда я пытаюсь скомпилировать я получаю сообщение об ошибке о том, что это недостижим заявление, что является причиной этого?

ответ

10

Есть паразитный ';' в первой строке вашего добавленного кода, который делает первый continue; всегда выполненным!

3

Оба эти условия не могут быть истинными одновременно, и компилятор знает об этом.

Читайте вслух:

Если пользователь вводит первый символ больше, чем NUMCOLS и его меньше 0! Если NUMCOLS равно 0 или больше, второе условие не может быть истинным одновременно, и наоборот.

+0

OK - я неправильно об этом является причиной ошибки компиляции, но логика кажется неправильным , Как оба условия могут быть истинными одновременно? –

+0

На самом деле это следующая проблема, с которой я столкнулся, вот что я тестирую; if (userInput.charAt (0) <0 && userInput.charAt (0)> (NUMCOLS + 1)) то, что я пытаюсь сделать, это создать игру шашек, я проверяю, чтобы номер, введенный проигрывателем, находится между диапазоном от 1 до 8, NUMCOLS - это переменная, используемая для определения размера шахматной доски (в данном случае 7, но плата рисуется 1-8 вместо 0-7, поэтому добавление 1 до NUMCOLS) Независимо от того, что я ввожу, он всегда возвращает false в состояние и пропускает ошибку ... – Troy

+0

Так что вы хотите userInput.charAt (0)> = 1 && userInput.charAt (0) <9) –

3

Ваш if тест имеет пустое тело!

поэтому ниже код выполняется всегда и так есть continue код следующие инструкции никогда не выполняется ..

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