ArrayList不会在控制台中打印

时间:2014-01-22 18:22:14

标签: java

我有一个Employee类,其中一个名为addEmployee的方法操纵ArrayList来添加员工。我的以下代码不会在控制台屏幕上打印列表。我无法找出我的代码有什么问题。

package com.sib.Tmanager;

import java.util.ArrayList;
import java.util.Scanner;

public class Employee {
    private String EmpFName;
    private String EmpLName;

    public Employee(String empFName, String empLName) {
        super();
        EmpFName = empFName;
        EmpLName = empLName;
    }
    public String getEmpFName() {
        return EmpFName;
    }
    public void setEmpFName(String empFName) {
        EmpFName = empFName;
    }
    public String getEmpLName() {
        return EmpLName;
    }
    public void setEmpLName(String empLName) {
        EmpLName = empLName;
    }

    public static void addEmployee()
    {
        ArrayList<Employee> Emplist= new ArrayList<Employee>();

        Scanner s=new Scanner(System.in) ;

        System.out.println("Enter the Firstname of the employee");
        String Fname= s.next();
        System.out.println("Enter the Lastname of the employee");
        String Lname= s.next();

        Employee emp = new Employee(Fname, Lname);
        Emplist.add(emp);

        //System.out.println(emp.EmpFName +" "+ emp.EmpLName);

        System.out.println(Emplist);
    }

}

我尝试通过覆盖ToString()方法来更改我的代码,但仍然有相同的输出。

  

输入员工的名字

     

杰森

     

输入员工的姓氏

     

卡尔

     

[com.sib.Tmanager.Employee@1a758cb]

4 个答案:

答案 0 :(得分:2)

这可能不是答案,而是关于课堂设计的一些建议。

  1. Employee视为物理对象。
    • Employee是否应该有名字?是。
    • Employee是否应该使用姓氏?是。
    • Employee是否应填充其他Employyes?绝对没有。
  2. 如果上述第三点没有意义,你该怎么办?
    • 创建一个名为EmployeeList的类。 EmplpoyeeList Employees应该Employee吗?为什么,当然!
    • 上述课程是您希望获得ArrayList addEmployee
    • 的课程
    • 此外,您希望获得Employee方法,以便添加EmployeeList public class EmployeeList { ArrayList<Employee> employees; public EmployeeList() { employees = new ArrayList<Employee>(); } public void addEmployee(Employee employee) { employees.add(employee); } public void printEmployees() { for (Employee e : employees) { System.out.println(e); } } }
  3. 这是一个例子

    main

    因此,在EmployeeList中,您首先会创建一个Employee,然后向其添加public static void main(String[] args) { EmployeeList list = new EmployeeList(); list.addEmployee(new Employee("Jim", "Bo"); list.addEmployee(new Employee("Foo", "Bar"); list.addEmployee(new Employee("First", "Last"); list.printEmployees(); }

    Employee

    注意:要使toString()对象以字符串形式打印出来,您应该像其他人建议的那样覆盖{{1}}方法。

答案 1 :(得分:1)

您可以使用Arrays.toString(empList.toArray(new Employee[0]))empList.toString()来打印ArrayList的内容。如果您覆盖toString()中的Employee,则可以很好地打印。

答案 2 :(得分:0)

从public static void main()

调用AddEmployee()
  

的System.out.println(Emplist)

您正在尝试打印Emplist对象

你必须迭代arraylist以显示它的内容

答案 3 :(得分:0)

您应该在类字段中分配ArrayList并在构造函数

中初始化它
public class Employee {
private String EmpFName;
private String EmpLName;
private ArrayList<Employee> Emplist;
.
.
.
}

public Employee(String empFName, String empLName) {
    super();
ArrayList<Employee> Emplist= new ArrayList<Employee>();
    EmpFName = empFName;
    EmpLName = empLName;
}

现在,当您需要添加时,只需执行以下操作:

this.Emplist.add(X);

在addEmployee方法