gpt4 book ai didi

java - 生成带前缀的员工 ID

转载 作者:行者123 更新时间:2023-12-01 22:14:53 25 4
gpt4 key购买 nike

我是java初学者,我想编写一个从抽象类Employee.java开始的代码,然后从它扩展其他类(Engineer.java,Technician.java,ServiceManager.java ...)。属性我的 Employee 类有 ID、姓名、年龄、薪水。我将 SetSalary() 和 SetID() 两个方法抽象化。我遇到的问题是关于 SetID() 方法,我考虑将 ID 设为 6 个字符的数组,前 2 个字符是前缀,例如,工程师类具有从 'A' 到 'D' 的字符作为前缀,我们将从 'AA0000' 开始,然后每次我添加一个时,最后 4 个字符都会自动递增工程师告诉 ID 为“AA9999”的员工,然后第二个字符应切换为“B”,我们将有相同的过程告诉 ID“AD9999”,那么这次下一个员工的 ID 应为“BA0000”。代码我到目前为止 SetID() 方法:

        char[] Mat = new char[6];
Mat[0]='A';Mat[1]='A';
Mat[2]='0';Mat[3]='0';Mat[4]='0';Mat[5]='0';

char[] stop = new char[6] ;
stop[0]='D';stop[1]='D';stop[2]='9';stop[3]='9';stop[4]='9';stop[5]='9';
String M = new String(Mat);
String Sub = M.substring(2,6);

do {
if(Mat[2]=='9' && Mat[3]=='9' && Mat[4]=='9' && Mat[5]=='9') {
if(Mat[1]=='D') {
int tmp =(int)Mat[0];
++tmp;
Mat[0] = (char)tmp;
Mat[1] = 'A';
Mat[2]='0';Mat[3]='0';Mat[4]='0';Mat[5]='0';
}
else {
int tmp =(int)Mat[1];
Mat[1] = (char)++tmp;
Mat[2]='0';Mat[3]='0';Mat[4]='0';Mat[5]='0';
}
}
else {
int i = Integer.parseInt(Sub);
i++;
if(i<10) { //here
char c = Character.forDigit(i, 10);
Mat[2]='0';Mat[3]='0';Mat[4]='0';Mat[5]=c;
}
if(i<100) { //and here
Mat[2]='0';Mat[3]='0';
char[] s = ("" + i).toCharArray();
Mat[4]=s[0];Mat[5]=s[1];
}
if(i<1000) {
Mat[2]='0';
char[] s = ("" + i).toCharArray();
Mat[3]= s[0];Mat[4]=s[1];Mat[5]=s[2];
}
else {
char[] s = ("" + i).toCharArray();
Mat[2]=s[0];Mat[3]=s[1];Mat[4]=s[2];Mat[5]=s[3];
}
}
}
while(Mat==stop);

System.out.println(Mat); `

当它应该切换第一个字符时(尝试用“AD9999”初始化Mat),也可以切换第二个字符(用“AB9999”初始化Mat),但问题是当它只应该增加旁边的数字时,它会起作用。当前缀 <10 或 <100 时,它不起作用,在其他两种情况下(<1000 或 >1000)它会起作用。我尝试以多种方式解决该问题,但每次问题都集中在这两种情况上,我希望您能提供帮助。提前致谢。

最佳答案

您可以通过使用两个变量来简化这一过程,一个是十六进制值,另一个是整数。这是一个精简的测试版本

int firstBit = 0xaa;
int secondBit = 0;

for (int x = 1; x < 20; x++) {

System.out.printf("%s%d%n", Integer.toHexString(firstBit), x);
secondBit++;
if (secondBit > 5) {
firstBit++;
secondBit = 0;
}
secondBit++;
}

关于java - 生成带前缀的员工 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com