我目前正在使用Integer.parseInt(str)将字符串转换为int。如果用户输入一个字母,我如何阻止它转换它(并打印出未知数字?)
String numberID = userChoice;
int index = Integer.parseInt(numberID) - 1;
答案 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
}