即使while中的布尔值为false,循环仍会继续进行。我不知道怎么了。如果他们的答案没有被缓存,则应该将boolean循环变量设置为false,从而使您退出循环,但由于某种原因,程序没有这样做。
public static double getvalue(String unit) {
double answer = 0;
boolean loop = true;
do {
try {
System.out.println("enter the " + unit);
answer = sc.nextDouble();
loop = false;
} catch (Exception e) {
System.out.println("has to be a double");
sc.nextLine();
}
} while (loop);
return answer;
}
*编辑:第11次浏览我的代码并完成更多代码后,结果发现问题出在顶部的另一个循环中,我没有正确解决,使它继续调用此循环以上。我修复了它,现在可以了。非常感谢您,对此感到遗憾
答案 0 :(得分:3)
这就是我会做的-
public static double getValue(String unit) {
Scanner keys = new Scanner(System.in);
double answer = 0;
System.out.println("Enter a double: ");
while (true) {
try {
answer = keys.nextDouble();
return answer;
} catch (Exception exc) {
System.out.println("number has to be a double!");
keys.nextLine();
}
}
}
答案 1 :(得分:0)
尝试这种方式:
public static double getvalue(String unit) {
double answer = 0;
boolean loop = true;
do {
try {
System.out.println("enter the " + unit);
answer = (double) sc.nextDouble();
break;
} catch (Exception e) {
System.out.println("has to be a double");
sc.nextLine();
}
} while (true);
return answer;
}