2015-11-22 4 views
-5
while (a != true) { 
      try { 
       input = user_input.nextInt(); 

       calculate(input); 
       a = true; 
      } catch (InputMismatchException ex) { 
       user_input.next(); 
       System.out.println("fdsa"); 
      } catch (RangeException ex) { 
      } 

     } 

     if (input == 1) 

Моя проблема заключается в том, что я перехватывать исключения мне нужно, которые если вход < 1 и> 4 или строка и я печатать сообщения об ошибках и программа снова просит меня, чтобы ввести число от 1 до 4, но когда я начал внедрять исключения, входная переменная на моем, если говорит, что она не может быть инициализирована. Это мой первый случай, когда я выполняю исключения, и мне трудно.Переменная не может быть парафировано

(изменить) Я решил предыдущую проблему, но я столкнулся с новой неразрешимой проблемой со сканером, когда я набираю int между 1 и 4. Этот фрагмент моего кода находится в пределах другого цикла while, который в настоящее время бесконечен, поскольку он не позвольте мне снова ввести вход = user_input.nextInt(); и он всегда повторяется с тем же значением, которое я первоначально напечатал. Спасибо заранее и жаль, что не поставил свою проблему в структурированной форме.

+0

Как предполагает инициализацию переменный .. – user7

+0

пожалуйста опубликовать работоспособный пример, а затем указать, что ваш ожидаемый результат и тем, что выход вы получаете – Blip

+0

Вы можете избавиться от 'Ā'. Измените 'while (a! = True)' to 'while (true)' и замените 'a = true;' на 'break'. Тогда компилятор будет достаточно умным, чтобы понять, что 'input' должно быть присвоено значение к моменту достижения строки' if (input == 1) '. –

ответ

0

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

int input; 
while (true) { 
    try { 
     input = user_input.nextInt(); 
     calculate(input); 
     break; 
    } catch (InputMismatchException | RangeException ex) { 
     user_input.next(); 
    } 
} 
if (input == 1) // ok now. 
+0

можете ли вы, пожалуйста, проверить вторую часть моего вопроса? У меня проблема со Сканером и командой nextInt() –

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