Java阻止用户输入除整数之外的任何内容

时间:2015-04-20 07:59:44

标签: java

我的意图是从用户那里获取字符串输入,并且只接受整数值。也许我所拥有的并不是最好的方法,如果是这样的话,让我知道如何改变我的计划。假设用户输入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++;
}

2 个答案:

答案 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引发的异常并要求用户输入另一个序列。

但我会改用nextInthasNextInt,并忽略任何不是数字的字符。