我想为“员工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
答案 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)
答案 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;
}
这个,我的朋友,绝对不喜欢正则表达式,但肯定有效。