防止Integer.parseInt(str)使用字母

时间:2014-11-13 01:40:30

标签: java

我目前正在使用Integer.parseInt(str)将字符串转换为int。如果用户输入一个字母,我如何阻止它转换它(并打印出未知数字?)

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

2 个答案:

答案 0 :(得分:3)

从技术上讲,你不能做你想要的。就像已经提到的那样,你确实需要使用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;
} 

你不能在try块之外使用索引,因为在try完成后它会超出范围,因为变量是在try中声明的。有时这很好,但有时候它是你想要它的表现。

答案 1 :(得分:2)

Integer.parseInt不会将无效输入转换为整数。

如果您想检查输入是否为有效号码,则需要抓住NumberFormatException

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