2016-01-25 4 views
1

Мне очень жаль, потому что, может быть, такой глупый вопрос.Предотвращение ввода строки в двойной var. 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(); 
    }} 

так, когда я пытаюсь (входная строка, которые не могут быть преобразованы в два раз) или (двойной, который меньше нуля) мне нужно получить сообщение «Недопустимый номер, введите положительный двойной номер» и введите еще раз, если он снова не правильный, затем получите сообщение и снова и снова.

, но в этом случае (когда у меня есть этот код) У меня есть это 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

Вы звоните nextDouble() в свой цикл.

Каждый раз, когда вы вызываете этот метод, следующий двойной возвращается, вы должны сделать это следующим образом:

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 один раз, так что сохраняется его значение

Смежные вопросы