0

这是我第一次使用数组列表创建程序,我遇到了一个小问题。代码的小描述...您列出员工的信息(ID#、姓名、开始日期、薪水等),并在“employeeTArea”中输出。

public class EmployeeView extends FrameView {
/** Define the ArrayList */
ArrayList <String> inventory = new ArrayList <String>();

public EmployeeView(SingleFrameApplication app) {

}// </editor-fold>

private void AddActionPerformed(java.awt.event.ActionEvent evt) {

    String c;
    String ID, firstName, lastName, annualSal, startDate;

    ID = IDField.getText();
    firstName = firstNameField.getText();
    lastName = lastNameField.getText();
    annualSal = annualSalField.getText();
    startDate = startDateField.getText();

    c = new String (ID);
    c = new String (firstName);
    c = new String (lastName);
    c = new String (annualSal);
    c = new String (startDate);
    inventory.add(c);
}

private void ListActionPerformed(java.awt.event.ActionEvent evt) {

问题就在下面……尽管在 get(x)(名字、姓氏、ID 等)带有红色下划线之后,您可能看不到所有内容。就这几个字。当然,这会产生一个问题,因为在我通过按下“addButton”将员工信息存储在数组中之后,当我按下“listButton”以显示该信息时,我将无法再访问该信息。

    String temp="";

    for (int x=0; x<=inventory.size()-1; x++) {
        temp = temp + inventory.get(x).ID + " "
                + inventory.get(x).firstName + " "
                + inventory.get(x).lastName + " "
                + inventory.get(x).annualSal + " "
                + inventory.get(x).startDate + "\n";
    }
    inventoryOut.setText(temp);

    class Company {
    String ID, firstName, lastName, annualSal, startDate, mileage;

    Company (String _ID, String _firstName,String _lastName, String _annualSal, String _startDate) {
        ID = _ID;
        firstName = _firstName;
        lastName = _lastName;
        annualSal = _annualSal;
        startDate = _startDate;
    }
}

}

4

2 回答 2

0

ArrayList <String> inventory = new ArrayList <String>();这是一个 String 的 ArrayListinventory.get(x)也是一个 String

你应该放的是ArrayList <Employee> inventory = new ArrayList <Employee>();

于 2013-04-30T22:29:16.293 回答
0

你的问题

看看你在哪里声明这些变量。它们local在需要时被声明为global。在任何方法声明之外声明它们。

另请查看此声明:

ArrayList <String> inventory = new ArrayList <String>();

您已参数化为inventorytype String,但您想像使用 type 一样使用它Employee

约定

Java 约定规定您不应该直接访问成员;你应该使用accessorsand mutators。例如:

public String getID()
{
    return ID;
}

你的一些代码

c = new String (ID);
c = new String (firstName);
c = new String (lastName);
c = new String (annualSal);
c = new String (startDate);
inventory.add(c);

您在这里所做的是声明c为新字符串,其值为ID.. 然后将其声明为新字符串,其String值为firstNameetc 等。本质上,您只是startDate每次都添加。更不用说所有这些值都已经是对象的事实了。从它们String创建新对象确实没有任何好处。String

于 2013-04-30T22:26:59.827 回答