Bellow你可以看到我遇到问题的部分代码。到目前为止,当用户输入" a"程序返回错误。我希望程序返回"错误的条目再次尝试!"然后回到起始状态。
do{
System.out.println("Vnesi dožino besede, ki jo iščeš");
Scanner in = new Scanner(System.in);
dolzina = in.nextInt();
}while (dolzina<0);
答案 0 :(得分:0)
Scanner in = new Scanner(System.in);
do{
System.out.println("Vnesi dožino besede, ki jo iščeš");
try {
dolzina = in.nextInt();
} catch ( InputMismatchException e ) {
dolzina = -1;
System.err.println( "Wrong entry, try again" );
}
} while (dolzina<0);
这将捕获扫描程序在需要int并获取其他内容时抛出的异常。当发生这种情况时,它会在dolzina
中加上一个负数,根据你的循环条件,它将导致它重做循环。
扫描仪应在循环外打开。
答案 1 :(得分:0)
如果我了解您,您可以在尝试阅读之前检查Scanner.hasNextInt()
是否正确。而且,您应该声明Scanner
一次。像,
int dolzina = -1;
Scanner in = new Scanner(System.in);
do {
System.out.println("Vnesi dožino besede, ki jo iščeš");
if (in.hasNextInt()) {
dolzina = in.nextInt();
} else if (in.hasNextLine()) {
System.out.printf("Wrong entry (%s) try again!%n",
in.nextLine());
} else {
System.out.println("No Entry!");
System.exit(1);
}
} while (dolzina < 0);
答案 2 :(得分:0)
尝试检查int是否通过in.hasNextInt()传递。
if (in.hasNextInt()) {
dolzina = in.nextInt();
}