繁体   English   中英

ArrayList不会在控制台中打印

[英]ArrayList won't print in console

我有一个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]

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

  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);
        }
    }
}

所以在main ,你首先会创建一个EmployeeList然后添加Employee s。

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对象以String表示形式打印出来,您应该像其他人建议的那样覆盖toString()方法。

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

从public static void main()调用AddEmployee()

的System.out.println(Emplist)

你正在尝试打印Emplist对象

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

您应该在类字段中分配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方法中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM