Java 生成最终变量的方法不更新用于它的值
Java Method for generating final variable NOT updating the value used for it
嗨,我正在与 blueJ 的 JAVA 合作
我在使用以下代码时遇到问题:
public class License {
private String lastName = "Null";
private final String ID_NUM = generateIDNumber();
private static int ID_GEN = 33333;
public License(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
private String generateIDNumber() {
String firstLetter = getLastName().substring(0,1);
String idNumber = String.format("%d", ID_GEN) + "-" + firstLetter; firstLetter;
ID_GEN += 1;
return idNumber;
}
}
所以当我输入我的姓氏时,程序需要生成身份证号码
由5位数字和输入姓氏首字母组成
但是,用于 generateIDNumber()
的 lastName
的值是 未使用新输入的输入 、
进行更新
虽然当我执行 getLastName()
时,它得到了更新的输入。
换句话说,即使我将lastName
输入为"James",generateIDNumber()
中firstLetter
的值对于"Null"仍然是“33333-N”,而不是"James" 的“33333-J”。
为什么是这样?提前谢谢你。
您在构造函数运行之前设置 ID_NUM
,因此 lastName
仍然是 "Null"
。解决方法是在构造函数中设置:
private final String ID_NUM;
public License(String lastName) {
this.lastName = lastName;
this.ID_NUM = generateIDNumber();
}
作为旁注,CONSTANT_CASE 应该保留给 static final
变量。 None 个变量属于该类别。
嗨,我正在与 blueJ 的 JAVA 合作 我在使用以下代码时遇到问题:
public class License {
private String lastName = "Null";
private final String ID_NUM = generateIDNumber();
private static int ID_GEN = 33333;
public License(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
private String generateIDNumber() {
String firstLetter = getLastName().substring(0,1);
String idNumber = String.format("%d", ID_GEN) + "-" + firstLetter; firstLetter;
ID_GEN += 1;
return idNumber;
}
}
所以当我输入我的姓氏时,程序需要生成身份证号码
由5位数字和输入姓氏首字母组成
但是,用于 generateIDNumber()
的 lastName
的值是 未使用新输入的输入 、
进行更新
虽然当我执行 getLastName()
时,它得到了更新的输入。
换句话说,即使我将lastName
输入为"James",generateIDNumber()
中firstLetter
的值对于"Null"仍然是“33333-N”,而不是"James" 的“33333-J”。
为什么是这样?提前谢谢你。
您在构造函数运行之前设置 ID_NUM
,因此 lastName
仍然是 "Null"
。解决方法是在构造函数中设置:
private final String ID_NUM;
public License(String lastName) {
this.lastName = lastName;
this.ID_NUM = generateIDNumber();
}
作为旁注,CONSTANT_CASE 应该保留给 static final
变量。 None 个变量属于该类别。