防止将字符串输入double var。 Java的

时间:2016-01-25 13:10:03

标签: java

我很抱歉,也许,这样一个愚蠢的问题......

我需要得到正双,并防止输入字符串(因此获得异常)。 我已经尝试过做异常的事情,但已经混淆了很多......

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

如果有人可以帮助我,我真的很感激。 提前感谢

1 个答案:

答案 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一次,因此保留其值