2013-10-25 2 views
-2

Итак, когда я делаю что-то вроде этого. Я пытаюсь понять, как остановить пользователя от простого ввода символа или строки и создания ошибки времени выполнения. Я не знаю, как фильтровать вход здесь:Как остановить пользователя от ввода строки или символа, когда я прошу удвоить?

 System.out.println("Please enter the degree of difficulty" 
       + " for this dive"); 

     while(degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2) 
     { 
      degreeOfDifficulty = scanner.nextDouble(); 
     } 

Если ввести символ или строку здесь, очевидно, это приведет к ошибке. Пожалуйста помоги! Благодарю.

+0

отвергнуто, как вопрос не очень понятно. – Tinman

+0

Посмотрите на обработку исключений Java. Google «Java: как обрабатывать исключение». – Tinman

ответ

0

У вас может быть условие для вашего цикла while.

boolean invalidInput = false; 
while(!invalidInput && (degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2)) 
{ 

    try { 
     degreeOfDifficulty = scanner.nextDouble(); 
     invalidInput = false; 
    } catch (Exception e) { 
     System.out.println("Your entry was invalid, please enter a double."); 
     invalidInput = true; 
    } 
} 
0

самый простой будет использовать попытаться поймать

+0

или hasNextDouble() для проверки – Anton

+0

взгляните на документ по адресу http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html. – Anton

2

Использование scanner.hasNextDouble() вместо try...catch.

Дает ли следующий токен на входе действительным double. Вы можете либо получить его с scanner.nextDouble(), либо проигнорировать токен с scanner.next().

0

Это помогло мне. !!

Создайте булевый mothod следующим образом.

private boolean preventNonestring(String str) { 
    Pattern p = Pattern.compile("[^a-z A-Z]"); 
    return p.matcher(str).find(); 
} 

Затем используйте метод следующим

if(preventNonestring(yourtext)){ 
//Do something here when true 
}else{ 
//Your error message here when false 

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