Этот код будет вводиться пользователем с консоли и перейти в одно из двух мест в зависимости от того, является ли вход целым или нет. Исключение ловят, а затем обрабатывают, читая его снова, чтобы вытащить его из потока. (не уверен, что сканер считается потоком, но я знаю, что без input.next() он никогда не покинет этот раздел).Как выйти из цикла while (java)
Так что я хочу знать, как я могу выйти из цикла, если я попаду в исключение MismatchException с определенным вводом. Я тестировал if (bad_input == any), и оказывается, что я никогда не смогу туда попасть. Я попробовал несколько операторов печати в этом блоке, который никогда не выполнялся. Поблагодарили бы за любую помощь.
решаемые
Не знаете, как закрыть этот вопрос, но это была решена. Я неправильно использовал == для проверки двух строк. Правильный способ - использовать bad_input.equals («x»).
public static void main(String[] args){
//read input from console
Scanner input = new Scanner(System.in);
boolean loop = true;
while(loop){
//inputting "1 2 d 1" will evaluate each term separately and output at once
try{
//choice = console input only in INTEGER
int choice = input.nextInt();
System.out.println("Input was " + choice);
} catch (InputMismatchException ex){
//here if input != INTEGER
String bad_input = input.next();
System.out.println("Bad Input: " + bad_input);
//need to figure out how to exit loop!!
if(bad_input == "x"){
loop = false;
return;
}
continue;
}
}
}
Используйте перерыв вместо продолжения см http://stackoverflow.com/questions/462373/difference-between-break-and-continue-statement –
Продолжить есть для если «плохой вход» является то, кроме условия выхода «x». Я хочу, чтобы он продолжал итерацию, пока я не получу «х». –