2014-11-07 3 views
0
int i; 
Scanner scan = new Scanner(System.in) { 
i = scan.nextInt(); 
} 

Что я хочу сделать, это поймать ошибку в сканере, когда пользователь вводит символ вместо целого. Я попытался код ниже, но в конце концов вызова другого пользовательского ввода (клюв вызова другого scan.nextInt() в приписывании значения I после проверки первого scan.nextInt() числовых только.):Проверка пользовательского ввода (сканера) перед назначением переменной int

int i; 
Scanner scan = new Scanner(System.in) { 

    while (scan.hasNextInt()){ 
    i = scan.nextInt(); 
    } else { 
    System.out.println("Invalid input!"); 
    } 
} 

ответ

1

Ваша логика кажется немного выключенной, вам нужно использовать вход, если это недействительно. Кроме того, ваш анонимный блок кажется очень странным. Я думаю, что вы хотели что-то вроде

int i = -1; // <-- give it a default value. 
Scanner scan = new Scanner(System.in); 
while (scan.hasNext()) { // <-- check for any input. 
    if (scan.hasNextInt()) { // <-- check if it is an int. 
     i = scan.nextInt(); // <-- get the int. 
     break; // <-- end the loop. 
    } else { 
     // Read the non int. 
     System.out.println("Invalid input! " + scan.next()); 
    } 
} 
+0

У меня была ошибка с использованием «в то время как (scan.hasNext())», так что я изменил его на «если (scan.hasNext())» и проблема была решена! Благодаря! –

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