0

私は、単に入力を受け取り、いくつかの計算を行い、各従業員の出力を表示する給与プログラムを作成しようとしています。

私には時給と給料の2種類の従業員がいます。抽象従業員クラスに拡張するタイプごとにクラスを作成しました。

public abstract class Employee{
  private String name;
  private String type;
  private  int hours;
  private double rate;
}


public class SalaryEmployee extends Employee{

  public SalaryEmployee(String type, String name, int hours, double rate){
   this.type = type;
    this.name = name;
    this.hours = hours;
    this.rate = rate;
  }

  public void print(){

  }
}

私のメインメソッドで、以下のコードを使用してオブジェクトを作成しようとすると、次のようになります。

  Employee employee;
  if(type.equals("hourly"))
  {
    employee = new HourlyEmployee(type, name, hours, rate);
  }
  else
  {
    employee = new SalaryEmployee(type, name, hours, rate);
  }

コンパイルしようとすると、次のエラーが発生します。

Lab3.java:53: not a statement
        SalaryEmployee employee = new SalaryEmployee(type, name, hours, rate);
         ^
Lab3.java:53: ';' expected
        SalaryEmployee employee = new SalaryEmployee(type, name, hours, rate);
                      ^
2 errors

ここで何が起こっているのか分かりますか?セミコロンや中かっこをめちゃくちゃにして探しましたが、まだ何も見つかりませんでした。

見てくれてありがとう。

4

2 に答える 2

2

中括弧を使用しない場合、変数を宣言することは違法です。あなたが書くつもりだったものは次のように見えます:

Employee employee;
if(type.equals("hourly"))
  employee = new HourlyEmployee(type, name, hours, rate);
else
  employee = new SalaryEmployee(type, name, hours, rate);

ほとんどのコーディング規約は、ifまたはelseの後に常に中括弧を使用することをサポートしています。

于 2012-05-30T23:50:37.757 に答える
2

私が見ることができる唯一のエラーはSalaryEmployee、基本クラス変数がであるため、クラスが基本クラス変数にアクセスできないことですprivate。あなたはそれらを作るべきprotectedです。

ただし、発生するエラーは異なります。変更してもエラーが発生する場合は、エラーが他の場所にある可能性があります。

于 2012-05-31T00:34:48.183 に答える