创建具有数字和限制限制的自定义类字母值

时间:2014-06-25 18:43:04

标签: java boolean

我想为“员工ID号”创建一个自定义类,但它需要以### - X格式输出,其中三个数字中的每一个都只能在0-9范围内,并且X字母只能来自字母AM。

为了设置员工编号,我将其设置为:

public void setEmployeeNumber(String num)
{
  if (validEmployeeNum(num))
  {
     employeeNumber = num;
  }
  else
  {
     employeeNumber = "";
  }
}

然后计划创建一个带有上面列出的约束的布尔“validEmployeeNum”,但我对如何实现这一点感到有点困惑。任何人都可以协助我如何创建一个布尔值,以便### - X对于每个数字只能在0-9范围内,并且该字母只能来自字母A-M?

示例有效输入:195-C

示例无效输入:99522-V

4 个答案:

答案 0 :(得分:0)

regular expression的经典应用程序用例。这是一种品味:

import java.util.regex.*;

public class Match {

    static final Pattern pattern = Pattern.compile("^(\\d{3})-([A-M])$");

    static boolean isValid(String num) {
        return pattern.matcher(num).matches();
    }

    public static void main(String[] args) {
        for (String test : new String[] {
            "195-C",
            "1195-C",
            "195-Z"
        }) {
            System.out.println(test + " valid? " + isValid(test));
        }
    }
}

示例输出:

195-C valid? true
1195-C valid? false
195-Z valid? false

答案 1 :(得分:0)

您希望使用Regex查看字符串matches是否为您提供的正则表达式。

^([0-9]{3})-([A-M])

将匹配您要找的内容。演示显示here

答案 2 :(得分:0)

我会做这样的事情:

public Boolean validEmployeeNum(string num) { 
    if(num.length() != 5)
        return false;

    if('num.charAt(0)' >= 48 && 'num.charAt(0)' <= 57) {
        if('num.charAt(1)' >= 48 && 'num.charAt(1)' <= 57) {
            if('num.charAt(2)' >= 48 && 'num.charAt(2)' <= 57) {
                if('num.charAt(4)' >= 65 && 'num.charAt(4)' <= 77) {
                    return true;
               }
           }
       }
   }

   return false;
} 

当然,假设每个员工编号都是一个长度为5个字符的字符串。

答案 3 :(得分:0)

使用正则表达式,正如评论者所建议的那样(顺便说一句,这是一个非常好的建议)或者做这样的事情:

public static boolean validateNumber(String empNum)  
{  
   if(empNum.length() == 5)  
   {  
      char char1 = empNum.charAt(0);  
      char char2 = empNum.charAt(1);  
      char char3 = empNum.charAt(2);  
      char char4 = empNum.charAt(3);  
      char char5 = empNum.charAt(4);  

      if(char1 >= '0' && char1 <= '9')
      {
         if(char2 >= '0' && char2 <= '9')
         {
            if(char3 >= '0' && char3 <= '9')
            {
               if(char4 == '-')
               {
                  if(char5 >= 'A' && char5 <= 'M')
                  {
                     return true;
                  }
               }
            }
         }
      }
   }
   return false;
}

这个,我的朋友,绝对不喜欢正则表达式,但肯定有效。