我试图让其中一个用户需要输入一个随机整数的程序。如果用户输入的字符串我想要一条错误消息蹦出来:“这不是一个数字”,之后重启程序,直至用户输入一个数字。我得到这个至今,我坚持。我刚刚得到一个错误信息,如果我输入一个字符串,程序崩溃。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
do {
System.out.println("Input a number!");
number = scanner.nextInt();
if (!scanner.hasNextInt()) {
System.err.println("This is not a number");
}
} while (!scanner.hasNextInt());
System.out.println("You entered: " + number);
}
你得到InputMismatchException时,因为如果你输入一个字符串转换成一个scanner.nextInt()
,它会立即给出一个错误和它之前别的停止程序,这样就不会达到你的if语句。要解决这个问题的方法之一是改为接收用户输入的字符串,try
分析它为int,并结束循环,如果它不抛出异常。这是我的实现:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
int number = 0;
boolean end = true;
do {
System.out.println("Input a number!");
input = scanner.nextLine();
try {
number = Integer.parseInt(input);
end = true;
} catch(Exception e) {
System.err.println("This is not a number");
end = false;
}
} while (!end);
System.out.println("You entered: " + number);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句