我陷入了无限循环...应该要求用户再次输入。 请帮助
public class Example {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = 0;
do {
try {
System.out.print("Enter number : ");
num = input.nextInt();
} catch (Exception e) {
System.out.println("Enter number only !!!");
}
} while (num != 5);
}
}
答案 0 :(得分:2)
发生这种情况是因为您要比较NON-Number与while(num!= 5)中的数字。由于Exception的原因,另一个输入没有从用户那里获取,并且先前的NON-Number输入被保存到num变量中,因此无限次出现Exception并执行catch(){}。
答案 1 :(得分:0)
要退出do-while循环,您需要输入数字5
答案 2 :(得分:0)
我没明白你要做什么。你做的事情应该是什么意思?无论如何,如果要检查用户输入的数字是否为NUMERIC而非非数字,则应该
System.out.print("Enter Number ");
Scanner input = new Scanner(System. in);
try {
String str = input.next();
int x= Integer.parseInt(str);
}
catch(Exception e) {
System.out.print("Type a Number, Not String");
}
答案 3 :(得分:0)
基本上,当您对num = input.nextInt();
之类的非数字输入执行a
时,扫描器a
中的缓冲区仍然存在,因为它未被读取,并且可用于使用do-while
进行的下一次扫描。因此,您将进入无限循环。
通过清除捕获中带有input.nextLine
的输入缓冲区来解决该问题。
catch (Exception e) {
System.out.println("Enter number only !!!");
input.nextLine();
}
请参阅@Ojasvi的参考
答案 4 :(得分:0)
您没有增加 num ,因此它将永远保持 0 ,并且会出现无限循环
答案 5 :(得分:0)
尝试一下:
因为您错过了将num = input.nextInt();
放入catch块的操作。
再将一件事保留在循环中,直到您将输入数字指定为5。
public class Example {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = 0;
do {
try {
System.out.print("Enter number : ");
num = input.nextInt();
} catch (Exception e) {
System.out.println("Enter number only !!!");
num = input.nextInt();
}
} while (num != 5);
}
}