2014-03-01 138 views
0

我正在嘗試編寫一個非常基本的Java程序,該程序將允許用戶輸入有關某些員工的信息。我想到的是一個for循環,它將創建一個單獨的Employee對象(已經定義了一個Employee類),然後在整個循環運行後將每個對象保留在內存中。類似這樣的:在循環體中創建新對象

 String input = JOptionPane.showInputDialog("How many Employees are we " 
     + "entering into the system?"); 
     int numEmployees = Integer.parseInt(input); 

    for (int count = 1; count <= numEmployees; count ++) 
    { 
    Employee employee(count) = new Employee(); 
    } 

我知道這段代碼不起作用;但我希望它清楚表明我所要做的是:循環的每次迭代都會創建一個新對象(employee1,employee2 .... employeeN),然後讓一些代碼允許用戶輸入所需的數據。我已經擁有了所有必要的訪問器和增變器方法。循環完成後,該對象將保留在內存中。 任何想法?感謝大家!

+1

使用數組。使用數組。使用數組 – McLovin

回答

0

嘗試將其存儲在某個集合中。或者只是在數組中。

  Employee[] employeList = new Employee[numEmployees]; 

     for (int count = 1; count <= numEmployees; count ++) 
     { 
      employeList[i]=new Employee(); 
     } 
0

您似乎試圖創建變量變量名稱,這在Java中是不可能的。相反,您應該將您的員工存儲在一個數組中。

Employee[] employees = new Employee[numEmployees]; 

對員工添加到數組,你可以這樣做

employees[count] = new Employee(); 
+0

謝謝!這正是我所期待的。 – cae52

0

你可以使用一個陣列(在這種情況下是好的,因爲你已經知道你將會有多少員工)或ArrayList(動態大小,如果不知道它將包含多少元素,則更好)。

Employee[] employees = new Employee[numEmployees]; 

然後每一個週期,你應該做

for (int count = 0; count < numEmployees; count ++) 
{ 
    employees[count] = new Employee(); 
} 

要創建一個新的員工和存儲。無論如何,我編輯了你的代碼的一些部分。

count = 1count = 0 因爲數組從0

count <= numEmployees開始將count < numEmployees 由於從0開始,<=將去numEmployees和數組大小是numEmployees-1它的意思是「出界」的陣列構成。

1

聽起來像是你要使用的陣列

Employee[] employees = new Employee[numEmployees]; 
for(int i = 0; i < numEmployees; i++) 
    employees[i] = new Employee(); 
0

你可以使用一個java.util.ArrayList中存儲Employee對象。您的代碼可能是這個樣子:

package EmployeeStuff; 

import java.util.ArrayList; 

// rest of the class code 

ArrayList<Employee> emps = new ArrayList<Employee>(); 


String input = JOptionPane.showInputDialog("How many Employees are we " 
    + "entering into the system?"); 
    int numEmployees = Integer.parseInt(input); 

for (int count = 1; count <= numEmployees; count ++) 
{ 
    emps.add(new Employee()); // add an employee object to the ArrayList 
} 

:d

0

我想這是你前往。創建一個空的僱員數組,然後在循環內依次分配。您可以選擇另一個答案中的ArrayList。

String input = JOptionPane.showInputDialog("How many Employees?"); 
int numEmployees = Integer.parseInt(input); 

Employee[] employess = new Employee[numEmployees]; 
for (int count = 0; count < numEmployees; count ++) 
{ 
    employees[count] = new Employee(); 
} 
+0

數組索引從0開始,而不是1. – McLovin

+0

當然,您是正確的。複製/粘貼失敗。 – indivisible

0
import java.util.*; 

public class EmployeeService 
{ 
    public static List<Employee> createEmployees(int numberOfEmployees) 
    { 
     List<Employee> employees = new ArrayList<Employee>(); 

     for(int i=0; i<numberOfEmployees;i++) 
     { 
      Employee e = newEmployee(); 

      // gather required employee information 

      employees.add(e); 
     } 

     return employees; 
    } 

    /** 
    * Create an in-memory employee object. 
    * 
    * @return in-memory employee object 
    **/ 
    public static Employee newEmployee() 
    { 
     return new Employee(); 
    } 
} 

class Employee 
{ 
}