2016-11-17 82 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