Java class setter 没有为 class 字段设置正确的值。
Java class setter not setting correct value to class field.
我有一个简单的 java 程序,我无法弄清楚为什么 class 的 setter 不会设置正确的值。
我有一个 class 员工,一个 class 部门,一个 class 公司。一旦我能够为 Employee 实例的字段设置正确的值,我就会将该员工存储在 Department(arrayList 字段)实例中的员工数组列表中。
class 称为 Employee。它有四个字段,String fName, String lName, int age, String department。我可以设置 fName 和 lName,尽管 age 总是设置为 0,department 总是设置为 null。
这是员工的代码 class:
public class Employee {
private String fName;
private String lName;
private String department;
private int age;
//getters and setters for the private fields of the Employee class
public void setAge(int num){
num = age;
}
public int getAge(){
return age;
}
public void setDepartment(String dep){
dep = department;
}
public String getDepartment(){
return department;
}
public void setfName(String afName){
fName = afName;
}
public String getfName(){
return fName;
}
public void setlName(String alName){
lName = alName;
}
public String getlName(){
return lName;
}
}
这是名为 addEmployee 的方法的代码:
public void AddEmployee(Department depInstance){
String firstName = JOptionPane.showInputDialog("Enter employee First name");
String lastName = JOptionPane.showInputDialog("Enter employee last name");
int empAge = Integer.parseInt(JOptionPane.showInputDialog("Enter employee age"));
String empDep = JOptionPane.showInputDialog("Enter employee department");
Employee employeeToAdd = new Employee();
employeeToAdd.setfName(firstName);
employeeToAdd.setlName(lastName);
employeeToAdd.setAge(empAge);
employeeToAdd.setDepartment(empDep);
//test input and variable setting
System.out.println("--------Inputs------");
varTester(firstName,lastName,empAge,empDep);
System.out.println("--------Recorded Vals------");
varTester(employeeToAdd.getfName(), employeeToAdd.getlName(),employeeToAdd.getAge(),employeeToAdd.getDepartment());
public static void varTester(String empfName, String emplName, int empAge, String empDep){
System.out.println(empfName);
System.out.println(emplName);
System.out.println(empAge);
System.out.println(empDep);
}
}
这是测试方法 varTester() 的输出:
--------Inputs------
Somefirstname
Somelastname
32
Accounting
--------Recorded Vals------
Somefirstname
Somelastname
0
null
我测试了从 showInputDialog 接收到的值,这是我想存储在 employeeToAdd 的 class 实例字段中的正确值,尽管只设置了名字和姓氏值,而不是年龄或部门.有人能指出我正确的方向吗?谢谢。
你把 setter 弄反了。应该是:
public void setAge(int num){
age = num;
}
你在 setDepartment
中有同样的错误。
您应该分配给成员变量,而不是分配给 setter 方法的参数。
您的 setter 设置的参数不是私有字段。
public void setAge(int num){
num = age;
}
public void setDepartment(String dep){
dep = department;
}
改为:
public void setAge(int num){
age = num;
}
public void setDepartment(String dep){
department = dep;
}
应该是:
public void setAge(int num){
age = num;
}
public void setDepartment(String dep){
department = dep;
}
我有一个简单的 java 程序,我无法弄清楚为什么 class 的 setter 不会设置正确的值。
我有一个 class 员工,一个 class 部门,一个 class 公司。一旦我能够为 Employee 实例的字段设置正确的值,我就会将该员工存储在 Department(arrayList 字段)实例中的员工数组列表中。
class 称为 Employee。它有四个字段,String fName, String lName, int age, String department。我可以设置 fName 和 lName,尽管 age 总是设置为 0,department 总是设置为 null。
这是员工的代码 class:
public class Employee {
private String fName;
private String lName;
private String department;
private int age;
//getters and setters for the private fields of the Employee class
public void setAge(int num){
num = age;
}
public int getAge(){
return age;
}
public void setDepartment(String dep){
dep = department;
}
public String getDepartment(){
return department;
}
public void setfName(String afName){
fName = afName;
}
public String getfName(){
return fName;
}
public void setlName(String alName){
lName = alName;
}
public String getlName(){
return lName;
}
}
这是名为 addEmployee 的方法的代码:
public void AddEmployee(Department depInstance){
String firstName = JOptionPane.showInputDialog("Enter employee First name");
String lastName = JOptionPane.showInputDialog("Enter employee last name");
int empAge = Integer.parseInt(JOptionPane.showInputDialog("Enter employee age"));
String empDep = JOptionPane.showInputDialog("Enter employee department");
Employee employeeToAdd = new Employee();
employeeToAdd.setfName(firstName);
employeeToAdd.setlName(lastName);
employeeToAdd.setAge(empAge);
employeeToAdd.setDepartment(empDep);
//test input and variable setting
System.out.println("--------Inputs------");
varTester(firstName,lastName,empAge,empDep);
System.out.println("--------Recorded Vals------");
varTester(employeeToAdd.getfName(), employeeToAdd.getlName(),employeeToAdd.getAge(),employeeToAdd.getDepartment());
public static void varTester(String empfName, String emplName, int empAge, String empDep){
System.out.println(empfName);
System.out.println(emplName);
System.out.println(empAge);
System.out.println(empDep);
}
}
这是测试方法 varTester() 的输出:
--------Inputs------
Somefirstname
Somelastname
32
Accounting
--------Recorded Vals------
Somefirstname
Somelastname
0
null
我测试了从 showInputDialog 接收到的值,这是我想存储在 employeeToAdd 的 class 实例字段中的正确值,尽管只设置了名字和姓氏值,而不是年龄或部门.有人能指出我正确的方向吗?谢谢。
你把 setter 弄反了。应该是:
public void setAge(int num){
age = num;
}
你在 setDepartment
中有同样的错误。
您应该分配给成员变量,而不是分配给 setter 方法的参数。
您的 setter 设置的参数不是私有字段。
public void setAge(int num){
num = age;
}
public void setDepartment(String dep){
dep = department;
}
改为:
public void setAge(int num){
age = num;
}
public void setDepartment(String dep){
department = dep;
}
应该是:
public void setAge(int num){
age = num;
}
public void setDepartment(String dep){
department = dep;
}