Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 特殊形式的字符串输入验证_Java_String_Validation_Char - Fatal编程技术网

Java 特殊形式的字符串输入验证

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

我试图排除员工编号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();
        }
        }

}

您可以使用正则表达式匹配输入
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]以满足您的需求。