2 回答
TA贡献1772条经验 获得超5个赞
最好使用 获取输入next(),而不是添加第三方库,创建一个辅助方法来检查输入是否为数字:
辅助方法:
public static boolean isNumeric(String strNum) {
try {
int d = Integer.parseInt(strNum);
} catch (NumberFormatException | NullPointerException nfe) {
return false;
}
return true;
}
在 do/while 循环中使用它:
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
boolean flag = true;
do {
System.out.println("Enter a number");
String input = scanner.next();
if(!isNumeric(input)) {
if(!input.equals("c")) {
System.out.println("Thats not a number !");
continue; // will restart the loop
}
else break; // will exit if input is "c"
}
else {
list.add(Integer.parseInt(input));
System.out.println(list);
}
}
while(flag);
现场示例在这里。
TA贡献1982条经验 获得超2个赞
一种方法是使用Scanner.next(),它将阻止等待输入,并Integer.parseInt()自己检查输入:
List<Integer> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Enter a number");
String next = scanner.next();
if (next.equals("c")) {
break;
}
try {
int number = Integer.parseInt(next);
list.add(number);
System.out.println(list);
} catch (NumberFormatException ex) {
System.out.println("That's not a number !");
}
} while (true);
添加回答
举报