2016-11-17 4 views
1

Я пытаюсь исключить использование пробега XXX-L, где x - цифра в диапазоне 0-9 и L - буква в диапазоне от A-M. Я пытаюсь заставить этот код работать. но я не могу ввести действительный ввод.Проверка ввода строки в специальной форме

import java.util.Scanner; 
import java.util.InputMismatchException; 

public class ObjectOrinetPrograming 
{ 
    public static void main(String [] args) 
    { 
     Scanner input = new Scanner (System.in); 
     System.out.println("Please Enter elements: "); 
     String employeenumber = input.nextLine(); 
     while (employeenumber.length() != 5) 
     { 
      System.out.println("invalid input; lenght, Try again:"); 
      employeenumber = input.nextLine(); 
     } 


      while (employeenumber.charAt(4) != ('A'|'B'|'C'|'D'|'E'|'F'|'G'|'H'|'I'|'J'|'K'|'L'|'M')) 
      { 
       System.out.print("invalid input; charrecter match, try again:"); 
       employeenumber = input.nextLine(); 
      } 


     while (employeenumber.charAt(0) == '-') 
     { 
      System.out.println("Invalid Input; form, try again:"); 
      employeenumber = input.nextLine(); 
     } 
     } 

} 

ответ

0

Вы должны использовать matches, которая позволит вам проверить все входы:

import java.util.Scanner; 
import java.util.InputMismatchException; 
public class ObjectOrinetPrograming 
{ 
    public static void main(String [] args) 
    { 
     Scanner input = new Scanner (System.in); 
     System.out.println("Please Enter elements: "); 
     String employeenumber = input.nextLine(); 

     while (!employeenumber.matches("[0-9]{3}-[A-Ma-m]")) { 
      System.out.println("invalid input; lenght, Try again:"); 
      employeenumber = input.nextLine(); 
     } 

    } 

} 
+0

благодарит много приятеля. – Muzy

+0

@ Muzy Я обновил свой ответ для вас. – BlackHatSamurai

+0

@Muzy, тогда регулярное выражение было бы просто ** [0-9] {3} - [A-Ma-m] ** в соответствии с вашим требованием. – m4heshd

1

Вы можете использовать регулярное выражение для ввода ввода employeenumber.

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please Enter elements: "); 
    String employeenumber = input.nextLine(); 
    while (!employeenumber.matches("[0-9]{3}-[A-M]")) { 
     System.out.println("invalid input; lenght, Try again:"); 
     employeenumber = input.nextLine(); 
    } 

    System.out.println("Your employee id is " + employeenumber); 

} 
+2

небольшой коррекции. регулярное выражение должно быть ** [0-9] {3} - [AM] ** – m4heshd

+0

@iNan большое вам спасибо, но я попробовал его и всякий раз, когда я вводил например: 123-A, который является правильным вводом, я все еще недействителен вход. Я думаю, что ваш код, кроме одного символа, в качестве ввода, который я пытаюсь сделать, состоит из 5 символов. Но спасибо в любом случае. – Muzy

+1

@ m4heshd после применения редактирования. Большое спасибо, ребята. – Muzy

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