我不确定我是否在错误的区域进行检查,或者我要检查的代码是否错误。我正在尝试检查员工 ID 是否以 999-A 格式有效。任何帮助,将不胜感激。
public class Employee {
private String name;
private String employeeNumber;
private String hireDate;
// Constructor
public Employee(String name, String employeeNumber, String hireDate){
this.name = name;
if(isValidEmployeeNumber(employeeNumber) == true){
this.employeeNumber = employeeNumber;
} else{
}
this.hireDate = hireDate;
}
// Getters and Setters
public String getName(){
return name;
}
public String getEmployeeNumber(){
return employeeNumber;
}
public String getHireDate(){
return hireDate;
}
public void setName(String name){
this.name = name;
}
public void setEmployeeNumber(String employeeNumber){
this.employeeNumber = employeeNumber;
}
public void setHireDate(String hireDate){
this.hireDate = hireDate;
}
//999-X
private boolean isValidEmployeeNumber(String employeeNumber){
if(Character.getNumericValue(employeeNumber.charAt(4)) > 10 &
Character.getNumericValue(employeeNumber.charAt(4)) < 22)
{
/*
int cutNum = Integer.parseInt(employeeNumber.substring(0,1));
if(cutNum <= 0 && cutNum <= 9){
cutNum = Integer.parseInt(employeeNumber.substring(1, 2));
if(cutNum <= 0 && cutNum <= 9){
cutNum = Integer.parseInt(employeeNumber.substring(2, 3));
if(cutNum <= 0 && cutNum <= 9){
setEmployeeNumber(employeeNumber);
return true;
}
}
}*/
return true;
}
return false;
}
}
正如您所看到的,我注释掉了我尝试过的部分,即使注释掉了 employeeNumber 的结果为 null。我尝试过 string.matches("\d{1}\d{1}\d{1}\-\D{1}") 和其他一些策略。
正则表达式非常适合此任务:
private boolean isValidEmployeeNumber(String employeeNumber) {
return employeeNumber.matches("[0-9]{3}-[A-Z]")
}
分解正则表达式:
[0-9]{3}
一个数 (0-9) 3 次-
破折号[A-Z]
AZ一次其他任何东西都无效。Note\D
对于任何非数字都有效,我认为这不是您的意图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句