2011-11-14 8 views
0

私は、JAVAの企業と従業員の名前をリストアップする簡単なプログラムを書いています。オブジェクトを動的に作成します。基本に戻る

オブジェクトを動的に作成したいと考えています。以下はコードです

public class EmployeeRecord { 

/** 
* @param args 
*/ 
String company, name; 
int employee; 
public String input; 
public static BufferedReader br; 
public int iE; 
public static String numberOfCompanies; 
String nameOfCompany;*/ 

public void company(String input) { 
    // TODO Auto-generated method stub 

    nameOfCompany = input; 
} 

public void employee(String employeeNumber) { 
    // TODO Auto-generated method stub 
    iE = Integer.parseInt(employeeNumber); 
}*/ 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    EmployeeRecord qw = new EmployeeRecord(); 
    try { 
     br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Enter number of companies: "); 
     numberOfCompanies = br.readLine(); 
     int G = Integer.parseInt(numberOfCompanies); 

     for (int i = 1; i <= G; i++) { 

      System.out.println("Enter name of the company: "); 
      String company = br.readLine(); 
      qw.company(company); 
      System.out.println("Enter Number of employees: "); 
      String employeeNumber = br.readLine(); 
      qw.employee(employeeNumber); 

     } 

     for (int i = 1; i <= G; i++) { 

      qw.sortCompanySummary(); 
     } 
    } catch (IOException io) { 
     io.printStackTrace(); 
    } 

} 

public void companySummary() { 

    System.out.println("Number of companies: " + numberOfCompanies); 
    System.out.println("Name of company: "+nameOfCompany); 
    System.out.println("Number of employees: "+iE); 


} 

} 

私がここでやりたいことは、クラスEmployeeRecordを別々に作成することです。例:

EmployeeRecord qw = new EmployeeRecord(); 
EmployeeRecord we = new EmployeeRecord(); 
+0

...ので、あなたの問題は何ですか?これは質問ではありません。 newを呼び出すと、別々のインスタンスが作成されます。また、これはOOPプログラムの非常に手続き型のコードです。ヘッド・ファースト・ジャワを読んだ後、ヘッド・ファースト・オブジェクト指向分析とデザインを行い、次にクリーン・コードを検討してください。 –

+0

あなたがしようとしているのは、ユーザー入力からデータが入力されたIDを持つ従業員オブジェクトを作成することです。このデータは、会社オブジェクト内に存在する従業員のリストに追加されます。 、および従業員のリスト。これはあなたのやり方ではありません。新しいEmployeeRecordsをループでインスタンス化し、さまざまな場所でそれらを渡すことで、現在作業しているものをハックすることができますが、これは根本的にそのアプローチが間違っています。 –

答えて

2

まず、制御コードからオブジェクトコードを分離する必要があります。

第2に、オブジェクトを保持するためのコレクションや配列が必要です。私が正しく質問を理解していなかったが、コードを見、私はあなたが入力を取っているとして、あなたがループ内でオブジェクトを作成する必要があると考えてい

public class UI{ // <---- this class will control the flow of your program 
    public static void main(String[] args){ 
     private List<Company> company; // <---- this Collection object holds many Company objects 
     ... 
     for(int i=0;i<company.size();i++){ 
      Company c = new Company(); 
      c.setName(br.readLine()); 
      List<Employee> employee = new ArrayList<Employee>(); 
      ... 
      for(int j=0;j<employee.size();j++){ 
       Employee e = new Employee(); 
       e.setName(br.readLine()); 
       ... 
       employee.add(e); 
      } 
      c.setEmployee(employee); 
      company.add(c); 
     } 
    } 
} 

public class Company{ // <---- this class will represent the companies 
    private List<Employee> employee; 
    private String name; 
    public void setEmployee(List<Employee> employee){ 
     this.employee = employee; 
    } 
    .... 
} 

public class Employee{ // <----- this class will represent the employees 
    private String name; 
    private int empNo; 
    public int getEmpNo(){ 
     return empNo; 
    } 
    ... 
} 
2

を:ここで

は、あなたのコードがどのように見えるべきかのアイデアですユーザーから。これはあなたがする必要があります:

ArrayList<EmployeeRecord> qwList = new ArrayList<EmployeeRecord>(); 

ユーザーからの入力を求める前にリストを宣言します。 ループ内にオブジェクトを作成し、値を割り当ててそれらのオブジェクトをリストに追加します。これは、新しいオブジェクトがリスト内に挿入されているすべての企業のために

for (int i = 1; i <= G; i++) { 

     EmployeeRecord qw = new EmployeeRecord(); 
     System.out.println("Enter name of the company: "); 
     String company = br.readLine(); 
     qw.company(company); 
     System.out.println("Enter Number of employees: "); 
     String employeeNumber = br.readLine(); 
     qw.employee(employeeNumber); 
     qwList.add(qw); 

    } 

リスト内で何ができるかです。これで、あなたはこのリストで何でもできます。すべてのレコードを印刷するか並べ替えます。

+1

このメソッドは設定されているので、 'qw.employee(employeeNumber);'と 'qw.company(company);'は 'setEmployee()'と 'qw.setCompany(company);' *会社と社員 – dantuch

1

あなたが掲示したコードとあなたが言及したオブジェクトの動的作成によると、私はそれを行う唯一の方法は、あなたがCollections Frameworkを見てくださいということです。

関連する問題