Java 特殊形式的字符串输入验证
我试图排除员工编号XXX-L,其中x是0-9范围内的一个数字,L是a-m范围内的一个字母。我试图让这个代码正常工作。但我无法输入有效的输入Java 特殊形式的字符串输入验证,java,string,validation,char,Java,String,Validation,Char,我试图排除员工编号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
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();
}
}
}
您可以使用正则表达式匹配输入
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);
}
您应该使用
匹配项
,这将允许您验证所有输入:
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-9]{3}-[A-M]@iNan,非常感谢,但我尝试了它,每当我输入例如:123-A,这是正确的输入,我仍然得到无效的输入。我想你的代码除了一个字符作为输入,我想做的是除了5个字符。但无论如何还是要谢谢你。@m4heshd在应用了编辑之后,它工作了。非常感谢大家。有人能解释一下为什么{3}很重要,它意味着什么或者做什么吗?@m4heshd非常感谢,所以我试着玩一下它。我注意到,如果我在[a-m]旁边再加一个[a-m]对小写字母不起作用,我会试图弄明白。谢谢alot@Muzy然后正则表达式将只是[0-9]{3}-[A-Ma-m]以满足您的需求。