我试图做一个简单的方法来询问一个数字,但我遇到了这个问题的麻烦,这是我的代码:
private static int rows(){
int w = 0;
Scanner sc = new Scanner(System.in);
do {
System.out.println("What is the number of rows?");
if(sc.hasNextInt()) {
w = sc.nextInt();
if (w <= 0){
System.out.println("Error: the rows can't be 0 or negative number.");
}
}
else {
System.out.println("Error: please only use digits.");
}
}
while (w<=0);
return w;
}
所以,当我引入一个负数或零时,代码工作正常,但如果我尝试引入一个字母或一个无效字符,如点或逗号,程序进入一个无限循环重复此:
System.out.println("What is the number of rows?");
System.out.println("Error: please only use digits.");
答案 0 :(得分:0)
w
仅在sc.hasNextInt()
的情况下发生变化。如果输入字母/无效字符,w
永远不会被更改,并且您的循环无法结束。
答案 1 :(得分:0)
您没有刷新w
的价值。重新启用该用户为w
输入新值。类似的东西:
int w = 0;
Scanner sc = new Scanner(System.in);
do {
System.out.println("What is the number of rows?");
if(sc.hasNextInt()) {
w = sc.nextInt();
if (w <= 0){
System.out.println("Error: the rows can't be 0 or negative number.");
}
}
else {
System.out.println("Error: please only use digits.");
sc.next(); // Clear default input on invalid input
continue; // Restart the loop so it gets newer value again
}
}
while (w<=0);
return w;