4

我刚开始,这真的很令人困惑,因为当我编写代码时,eclipse 上没有红色警告,但是当我运行程序时,它不起作用。问题是:

编写一个程序,显示员工 ID 以及员工的名字和姓氏。使用两个类。第一个类包含员工数据和设置 ID 和名称的单独方法。另一个类为员工创建对象并使用这些对象调用 set 方法。创建几个员工并显示他们的数据。

我的代码是:

public class Employee {
    String lastName = null; 
    String firstName = null; 
    double ID; 

    public Employee(String lastName, String firstName, double ID){
        this.lastName = lastName; 
        this.firstName = firstName; 
        this.ID = ID; 
    }

    public String empStat(){
        return "Last Name: " + lastName + "First Name: " + firstName + "ID" + ID; 
    }

}

 public class MainEmployee {
   public static void main(String args[]){

   Employee nub1 = new Employee ("Griffin", "Peter", 000001); 
   System.out.println(nub1);
   Employee nub2 = new Employee ("Griffin", "Lois", 000002); 
   System.out.println(nub2);
   Employee nub3 = new Employee ("Griffin", "Stewie", 000003); 
   System.out.println(nub3); 
   Employee nub4 = new Employee ("Griffin", "Brian", 000004); 
   System.out.println(nub4);


 }
}

它所做的只是显示

员工@523ce3f
员工@71b98cbb
员工@4cc68351
员工@7cd76237

有人能告诉我为什么吗?

4

4 回答 4

10

改变

public String empStat()

@Override
public String toString()

查看文档toString()中的工作原理(以及为什么您会看到Employee@523ce3f

当您使用System.out.println(nub1);该方法时nub1.toString()会被隐式调用。

于 2013-08-27T04:12:09.597 回答
0

您正在尝试打印对象,它将输出对象的哈希码。打印对象调用toString()Object 类中的方法,您必须重写 toString 方法才能获取对象的状态。

public String toString()
{
return firstName+" "+lastName+" "+ ID;
}

覆盖toString是最简单的方法,请考虑<Employee>类型列表。打印列表现在将返回对象的当前字段值。

List<Employee> list= new ArrayList<Employee>();
Employee o= new Employee("Will","Smith",1);
Employee o1= new Employee("Jason","Bourne",2);
list.add(o);
list.add(o1);
for (Employee x:list)
System.out.print(x);

输出:

[Will Smith 1, Jason Bourne 2]
于 2013-08-27T04:36:51.827 回答
0

必须重写 toString() 方法。每当对象需要返回对象的字符串时,都会调用此方法。默认情况下,您会收到“Employee@523ce3f”,它是对象的唯一内部表示(以字符串形式)。

简单地创建一个返回 String 的方法不会这样做。

要覆盖 toString() 方法更改:

public String empStat()

@覆盖
公共字符串 toString()
于 2013-08-27T04:19:59.927 回答
0

你需要一个toString方法

public String toString() {
    return lastName + " " + firstName + " " + Double.toString(ID);
}

把它放在一起:

class Employee {
    String lastName = null;
    String firstName = null;
    double ID;

    public Employee(String lastName, String firstName, double ID){
        this.lastName = lastName;
        this.firstName = firstName;
        this.ID = ID;
    }

    public String empStat(){
        return "Last Name: " + lastName + "First Name: " + firstName + "ID" + ID;
    }

    public String toString() {
        return lastName + " " + firstName + " " + Double.toString(ID);
    }

}
public class MainEmployee {
    public static void main(String args[]){

        Employee nub1 = new Employee ("Griffin", "Peter", 000001);
        System.out.println(nub1);
        Employee nub2 = new Employee ("Griffin", "Lois", 000002);
        System.out.println(nub2);
        Employee nub3 = new Employee ("Griffin", "ST", 000003);
        System.out.println(nub3);
        Employee nub4 = new Employee ("Griffin", "Brian", 000004);
        System.out.println(nub4);
    }
}

结果如下:

Griffin Peter 1.0
Griffin Lois 2.0
Griffin ST 3.0 
Griffin Brian 4.0
于 2013-08-27T05:43:54.727 回答