【问题标题】:Java class setter not setting correct value to class field.Java 类设置器没有为类字段设置正确的值。
【发布时间】:2015-08-02 15:32:04
【问题描述】:

我有一个简单的 java 程序,但我无法弄清楚为什么类的设置器不会设置正确的值。

我有一个 Employee 类,一个 Department 类,一个 Company 类。一旦我能够为员工实例的字段设置正确的值,我就会将该员工存储在部门实例中的员工数组列表中(arrayList 字段)。

名为 Employee 的类。它有四个字段,String fName、String lName、int age、String department。我可以设置 fName 和 lName 虽然年龄总是设置为 0 并且部门总是设置为 null。

这里是员工类的代码:

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 的类实例字段中的正确值,尽管只设置了名字和姓氏值,而不是年龄或部门。有人可以指出我正确的方向。谢谢。

【问题讨论】:

    标签: java class null field instance


    【解决方案1】:

    你让二传手倒退了。应该是:

    public void setAge(int num){
        age = num; 
    }
    

    setDepartment 中出现同样的错误。

    你应该分配给成员变量,而不是setter方法的参数。

    【讨论】:

    • 谢谢。感谢所有得出相同结论的人。我现在真的觉得很傻。让我哈哈大笑的总是最简单的错别字。总有一天我会学会的。
    【解决方案2】:

    您的 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; 
    }
    

    【讨论】:

      【解决方案3】:

      应该是:

      public void setAge(int num){
          age = num; 
      }
      public void setDepartment(String dep){
          department = dep; 
      }
      

      【讨论】:

        猜你喜欢
        • 2016-06-04
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 2020-01-21
        • 2020-01-01
        • 2021-10-07
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多