2013-04-30 15 views
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; 
    } 
} 

}

+0

你确定设置'C'了很多不同的东西。 – 2013-04-30 22:27:51

+0

你的'inventory'是'String'的'ArrayList',因此它只保存'String's,并且该类没有'firstName','lastName'等。我想你列出了错误的类型。你可能需要一个你自己类的'List',一个包含这些属性的类。 – 2013-04-30 22:30:09

+0

我看到你正在宣布一个“班级公司”,但没有看到你在任何地方使用它? – SOfanatic 2013-04-30 23:07:05

回答

0

你的问题

看看那里声明这些变量。他们被宣布为local,当他们需要是global。在任何方法声明之外声明它们。

也期待在此声明:

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

你必须参数inventory键入String,但是你想使用它喜欢它是Employee类型。

约定

的Java约定规定,你不应该直接访问成员;你应该使用accessorsmutators。例如:

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作为一个新的String,在ID值。然后宣布它作为一个新的String的值为firstName等。基本上,你只是每次加入startDate。更不用说所有这些值已经是String对象的事实了。从它们创建新的String对象实际上没有任何好处。

0

ArrayList <String> inventory = new ArrayList <String>();这是字符串 的ArrayList所以inventory.get(x)是一个String

你应该把为ArrayList <Employee> inventory = new ArrayList <Employee>();

+0

我原本是以这种方式开始的,然而“雇员”是加下划线的红色。 – Que 2013-04-30 22:33:04

+0

你有一个叫做Employee的类吗?如果是的话,你应该导入它 – 2013-04-30 22:42:23

+0

啊,正如我在你的代码中看到的,类名实际上是“公司”而不是“员工” – 2013-05-01 00:39:16