3

私は次のことをすることになっています:

10 種類の Employee オブジェクトのランダム リストを返す、generateEmployees( ) という静的メソッドを使用して、Java アプリケーション (クライアント) プログラムを作成します。配列または ArrayList を使用して、返される従業員オブジェクトを格納できます。for ループを使用して、ランダムに異なるタイプの従業員オブジェクトにランダム データを入力します。1 ~ 4 のような値の範囲を考えることができます。ランダム値が 1 の場合は、ランダムに生成されたデータを使用して HourlyEmployee オブジェクトを作成し、2 の場合は、ランダム データを使用して SalariedEmployee オブジェクトを作成します。これらのさまざまな Employee オブジェクトを生成して設定するのは、あなたの創意工夫に任せます。これらのオブジェクトが生成されたら、それらをデータ構造 (使用している配列または ArrayList) に追加します。最後に、メソッドはこのデータ構造を返します。

同じアプリケーション クラスで、main( ) メソッドを実装します。generateEmployees( ) 静的メソッドを呼び出し、for ループを使用して、端末ウィンドウに各従業員の詳細を収入とともに出力します。

私の generateEmployees() 静的メソッドは次のとおりです(正しくない可能性があります...また、少なくとも姓名に関しては、その方法が正確にわからないため、データはランダムに生成されていませんが懸念されます。):

public static Employee[] generateEmployees()
{
    Employee[] employees = new Employee[10];
    int randomNum = 0;
    
    for (int i = 0; i < 10; i++)
    {
        Random random = new Random();
        randomNum = random.nextInt(4) + 1;
         
         switch (randomNum)
         {
            case 0:
                employees[i] = new SalariedEmployee("Bri", "Gefroh", 123, 1000);
                break;
            case 1:
                employees[i] = new HourlyEmployee("Bri", "Gefroh", 123, 12.50, 10);
                break;
            case 2:
                employees[i] = new CommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05);
                break;
            case 3:
                employees[i] = new BasePlusCommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05, 2500);
                break;
         }
    }
    
    return employees;
}

このメソッドを呼び出して main() メソッドで使用するにはどうすればよいですか? これら 4 種類の従業員はそれぞれ Employee クラスのサブクラスであり、各サブクラスには独自の toString() メソッドがあります。

4

4 に答える 4

5

静的メソッドは、インスタンス メソッドではなく、クラス メソッドです。クラスのインスタンスではなく、クラスで呼び出されます。違いは、最初にインスタンスを持たずに静的メソッドを呼び出すことができることです。

Employee.doSomething();

Employee employee = new Employee();
employee.doSomethingElse();

したがって、generateEmployees() メソッドがメインと同じクラスにある場合、必要なのは

 generateEmployees();

それ以外の場合は、行う必要があります

 Employee.generateEmployees();

(Employee クラスに generateEmployees() が含まれている場合

于 2013-04-27T02:41:02.400 に答える
0

メソッドが同じクラスにある場合は、他のメソッドと同じように呼び出すことができます。

public static void main(String[] args)
{
    Employee[] employees = generateEmployees();

    // TODO: loop through and print out...
}

maingenerateEmployeesはどちらも静的であるため、機能するはずです。(generateEmployeesが静的でない場合は、最初にクラスのインスタンスを作成する必要があります)。

「名前」を含む文字列の定数配列を持ち、乱数を使用してインデックスを生成することをお勧めします。これは、名前を少しランダム化するのに役立つはずです。

于 2013-04-27T02:39:54.523 に答える
0

これは静的メソッドなので、インスタンス化されたオブジェクトのコンテキスト内でアクセスする必要はありません。public static void main(...) メソッドから呼び出すことができます。main() メソッドを含むクラスの名前が Employee の場合...

Employee.generateEmployees(); 

トリックを行うでしょう。

于 2013-04-27T02:40:12.460 に答える
0

Ashが述べたように、レコードを処理する必要がある場合、追加の変数を導入する理由はありません。

 public static void main(String[] args)
 {
      for(Employee employee: generateEmployees())
         print(employee); // define static print somewhere too

 }
于 2013-04-27T05:22:11.190 に答える