2014-11-13 1 views
0

im, использующей Integer.parseInt (str) для преобразования строки в int. Как я могу предотвратить его преобразование (и просто распечатать неизвестное число), если пользователь вводит письмо?Предотвратите использование Integer.parseInt (str) с помощью буквы

String numberID = userChoice; 
int index = Integer.parseInt(numberID) - 1; 
+4

Вы не можете. Обрабатывайте исключение. –

ответ

2

Технически вы не можете делать то, что вы просите. Как уже упоминалось, вам нужно использовать инструкцию try-catch, потому что, когда .parseInt() встречает ошибку, она вызывает исключение, поскольку программист вы можете «слушать» одно из этих исключений и делать что-то, если это происходит. Это делается с помощью инструкции try catch. Это не сложная концепция и ее очень хорошо документированная, я привел пример ниже.

//Must be declared outside of try block 
int index 
try{ 
index = Integer.parseInt(numberID) - 1; 
//Catches all NumberFormatExceptions but not other errors 
} catch(NumberFormatException e) { 
//Handle error here 
} 

Если вы должны были сделать это:

try{ 
    int index = Integer.parseInt(numberID) - 1; 
} 

вы не можете использовать индекс вне блока Ьгу, потому что он будет выходить из сферы после того, как попытка была завершена, так как переменная была объявлена ​​в попробуйте. Иногда это прекрасно, но в других случаях вы так себя чувствуете.

2

Integer.parseInt не преобразует недопустимый ввод в целое число.

Если вы хотите, чтобы убедиться, что ваш вход правильный номер, вам нужно поймать NumberFormatException:

try { 
    int index = Integer.parseInt(numberID) - 1; 
} catch (NumberFormatException e) { 
    // invalid number 
} 
+0

Thx, это сработало :) – pomelo

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