我的意图是从用户那里获取字符串输入,并且只接受整数值。也许我所拥有的并不是最好的方法,如果是这样的话,让我知道如何改变我的计划。假设用户输入1 2 3 4 a 5
等值。我该如何防止这个小错误。
String[] intVal;
String inputValues;
int[] numbers = new int[20];
int count = 0;
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(reader);
System.out.print("Enter up to 20 integer values here: ");
inputValues = input.readLine();
intVal = inputValues.split("\\s");
for(int i = 0; i < intVal.length; i++){
numbers[i] = Integer.parseInt(intVal[i]);
count++;
}
答案 0 :(得分:5)
Integer.parseInt(String s)
会抛出NumberFormatException
(请参阅Integer.parseInt(String s)
上的Javadoc)。
您可以执行类似
的操作for (int i = 0; i < intVal.length; i++) {
try {
numbers[i] = Integer.parseInt(intVal[i]);
count++;
}
catch (NumberFormatException ex) {
System.out.println(i + " is not a number. Ignoring this value..."); // Or do something else
}
}
答案 1 :(得分:0)
许多可能的解决方案,其中之一是捕获parseInt
引发的异常并要求用户输入另一个序列。
但我会改用nextInt
和hasNextInt
,并忽略任何不是数字的字符。