2016-05-15 1 views
0

Im, создавая программу, в которой пользователь вводит высоту между 3 и 10 и трифосс из zelda печатается в java. В настоящий момент, когда пользователь вводит числа за пределами этого диапазона, генерируется исключение, однако я хочу, чтобы программа выдавала исключение всякий раз, когда вводилась любая строка. Я не уверен, как использовать InputMismatchException. Это мой код до сих пор:Исключение не выполняется

public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 
    int height; 

    try { 
     System.out.print("Enter height: "); 
     height = keyboard.nextInt(); 
     } 

    catch (InputMismatchException e) { 
     System.out.println(""); 
     System.out.println("Invalid height."); 
    } 

    if (height < 3 || height > 10) { 
      System.out.println("Invalid height."); 
      System.exit(0); 
    } 
+0

Вы просите для 'int', если вы хотите, чтобы проверить, если строка была введена, то читайте в' Сканер # next' или 'Сканер # nextLine' и использовать 'Integer # parseInt' в блоке try-catch. –

+1

Вы не должны использовать 'System.exit (0)' в условии «ошибка»: выход с нулевым кодом ошибки означает «успех», по соглашению. Более того, вы должны использовать 'System.exit' очень редко в коде:' return' будет иметь такой же эффект здесь. –

ответ

1
try { 
    System.out.print("Enter height: "); 
    height = keyboard.nextInt(); 

    if (height < 3 || height > 10) { 
     System.out.println("Invalid height."); 
     System.exit(0); 
    } 
    // print triforce from zelda 
    // ... 
} catch (InputMismatchException e) { 
    System.out.println("please input a int"); 
} 
+0

Спасибо, много! :) –

+0

Почему вы ловите 'InputMismatchException' и используете' System.exit'? – Andrew

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