【问题标题】:Employee, first name, last name and ID员工、名字、姓氏和 ID
【发布时间】:2016-10-26 22:43:47
【问题描述】:

我刚开始,真的很困惑,因为当我编写代码时,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
Employee@7cd76237

谁能告诉我为什么?

【问题讨论】:

标签: java


【解决方案1】:

改变

public String empStat()

@Override
public String toString()

docs 中了解toString() 的工作原理(以及为什么您会看到Employee@523ce3f

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

【讨论】:

    【解决方案2】:

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

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

    要覆盖 toString() 方法更改:

    public String empStat()

    @覆盖 公共字符串 toString()

    【讨论】:

      【解决方案3】:

      您正在尝试打印对象,它将输出对象的哈希码。打印对象调用 Object 类中的toString() 方法,必须重写 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]
      

      【讨论】:

        【解决方案4】:

        你需要一个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
        

        【讨论】:

          猜你喜欢
          • 2021-07-22
          • 1970-01-01
          • 2016-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多