2015-10-07 3 views
0

Я хочу, чтобы проверить ввод с клавиатуры, чтобы подтвердить формат автомобиля пластиныRegex Java ввод с клавиатуры

 String formatoPatente = "[A-Za-z]{3}[\\-\\s][0-9]{3}"; 
    String patente,marca; 
    int añoPatentamiento; 
    double kilometraje,tamañobaul; 
    System.out.println("Ingrese la patente del automovil"); 
    patente=teclado.nextLine(); 
    boolean valido = patente.matches(formatoPatente); 
    while(!valido){ 
     System.out.println("Formato invalido de patente. Intente nuevamente."); 
     patente=teclado.next(); 
    } 

Я думаю, что регулярное выражение хорошо, но все еще не работает.

+0

Что вы подразумеваете под "regex is ok"? Что он должен проверить? Разрабатывать. –

+0

3 буквы капитала или нет, пробел и 3 номера – nico91

+0

У вас может быть только 3 номера без каких-либо алфавитов? –

ответ

0

next() будет читать символы до тех пор, пока не будет найдено пробел. Таким образом, номера ввода могут не читаться после указанного места. см., если приведенный ниже код помогает, когда ввод считывается из nextLine, который читает полную строку.

Scanner teclado = new Scanner(System.in); 
    String formatoPatente = "[A-Za-z]{3}[\\-\\s][0-9]{3}"; 
    String inputData, marca; 
    int añoPatentamiento; 
    double kilometraje, tamañobaul; 
    System.out.println("Ingrese la patente del automovil"); 
    Pattern patente = Pattern.compile(formatoPatente); 
    Matcher matcher; 
    boolean notMatched = true; 
     while(notMatched) { 
      inputData = teclado.nextLine(); 
      matcher = patente.matcher(inputData); 
      if(matcher.find()) { 
       System.out.println("Match Found"); 
       notMatched = false; 
      } else { 
       System.out.println("Formato invalido de patente. Intente nuevamente."); 
      } 
    } 
Смежные вопросы