【问题标题】:String input validation in special form特殊形式的字符串输入验证
【发布时间】:2016-11-17 00:10:56
【问题描述】:

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

}

【问题讨论】:

    标签: java string validation char


    【解决方案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);
    
    }
    

    【讨论】:

    • 一个小修正。正则表达式应该是 [0-9]{3}-[A-M]
    • @iNan 非常感谢你,但我试过了,每当我输入例如:123-A 这是正确的输入,我仍然得到无效的输入。我认为你的代码除了一个字符作为输入之外我想要做的是除了 5 个字符。不过还是谢谢。
    • @m4heshd 在应用编辑后工作。非常感谢你们。
    • 有人能解释为什么 {3} 很重要以及它的含义或作用吗?
    • @m4heshd 非常感谢,所以我正在尝试使用它,我注意到如果我在 [A-M] 旁边添加另一个 [a-m] 将不适用于小写字母,我想弄清楚出来。非常感谢
    【解决方案2】:

    您应该使用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();
            }
    
        }
    
    }
    

    【讨论】:

    • @Muzy 那么正则表达式只需 [0-9]{3}-[A-Ma-m] 即可满足您的要求。
    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多