我很抱歉,也许,这样一个愚蠢的问题......
我需要得到正双,并防止输入字符串(因此获得异常)。 我已经尝试过做异常的事情,但已经混淆了很多......
boolean check=false;
while (!check) {
if (PerConst.hasNextDouble() && !(PerConst.nextDouble()<0))
{
m = PerConst.nextDouble();
check=true;
}
else {
System.out.println("Invalid number, Enter positive double: ");
PerConst.next();
}}
所以当我尝试(输入不能转换为double的字符串)或(double小于零)时,我需要收到一条消息&#34;无效的数字,输入正双:&#34;并再次输入,如果它再次不正确,那么一次又一次地获取该消息..
但是在这种情况下(当我有那个代码时)我有这个intupr并输出..
qw
Invalid number, Enter positive double:
rt
Invalid number, Enter positive double:
-12
Invalid number, Enter positive double:
-13 //ink why i have to enter 2 numbers..
-34
Invalid number, Enter positive double:
-1
-2
Invalid number, Enter positive double:
2 //this one is ok, but again i have to enter 2 more num, and just the last one counts
3
4
4.0 //i read that var after getting out of that loop
如果有人可以帮助我,我真的很感激。 提前感谢
答案 0 :(得分:1)
您正在循环中调用nextDouble()
。
每次调用该方法时,都会返回下一个double,你应该这样做:
boolean check=false;
while (!check && PerConst.hasNextDouble()) {
m = PerConst.nextDouble();
if (m >= 0)
check=true;
} else {
System.out.println("Invalid number, Enter positive double: ");
}
}
if(!check) {
// System.in has reached EOF
}
此循环仅调用nextDouble一次,因此保留其值