2015-04-21 5 views
2

Я хочу проверить один символ в приложении Java. Я не хочу, чтобы пользователь мог ввести символ за пределами диапазона [a - p] (без учета прописных или строчных регистров) или numbers.Проверка ввода символа Java

Scanner input = new Scanner(System.in); 

System.out.print("Choose letter in range [a - p]"); 
letter = input.next().charAt(0); 

Любые идеи?

+0

Улучшенный вопрос грамматики. – dave

ответ

1

вы можете использовать regex для входного фильтра

.matches("^[a-pA-P0-9]*$") //this will not allow outside range of [a-p A-P] or numbers 

^ положение Утверждай в начале строки

- Создание диапазона символов с adjascent Маркеры

a-p одного символа в диапазоне между a и p (чувствительны к регистру)

A-P Один символ в диапазоне между A и P (чувствителен к регистру)

0-9 Один в диапазоне от 0 до 9

* Повторите предыдущие лексем zero в infinite раз, столько раз, сколько это возможно положение

$ Assert в конце строки

так:

Scanner input = new Scanner(System.in); 

    System.out.print("Choose letter in range [a - p]"); 
    letter = input.next().charAt(0); 

    if (Character.toString(letter).matches("^[a-pA-P0-9]*$")) { 
     System.out.println("valid input"); 
    }else{ 
     System.out.println("invalid input"); 
    } 

SEE REGEX DEMO

+0

Большое спасибо @ Dyrandz. Оно работает. – danielG

+0

Я рад, что помог :) –

1

вы можете оформить его с помощью цикла в то время, чтобы проверить, если письмо находится в пределах или нет, и просто продолжать просить пользователя ввести письмо

do { 
    System.out.print("Choose letter in range [a - p]"); letter = input.next().charAt(0); 
} while (letter is not in range of [a-p]); // pseudo code 
0

Если вы не знакомый с регулярным выражением, простые проверки на входе могут позаботиться об этом.

 System.out.print("Choose letter in range [a - p]"); 
     String letter = input.nextLine(); 
     if (letter.length() == 1 && ('a' <= letter.charAt(0) && letter.charAt(0) <= 'p')) { 
      System.out.println(letter); 
     } else { 
      System.out.println("Invalid input"); 
     } 

Я использую nextLine() в том случае, если несколько символов случайно вошел, поэтому проверить, что длина буквы == 1 и что письма попадают в диапазон, что я хочу, в противном случае это недопустимый ввод.

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