1

私は、ifあなたの年齢に応じて、どのような個人手当が得られるかを示す簡単なステートメントを作成しようとしています. クラスに「年齢」の欄があるのでEmployee、年齢を超えてしまいました。しかし、エラーが発生します: 演算子 > は、引数の型 Employee、int に対して未定義です。

どこが間違っていますか?これが私のコードです:

double calculatePersonalAllowance(Employee age){

    if (this.age < 65) {
      personalAllowance = 94440;

    }

      else if (this.age >= 65 && <75){
      personalAllowance = 10500;

    }

      else if (this.age >75){
      personalAllowance = 10660;

    return personalAllowance;
  }
4

4 に答える 4

6

else if (this.age >= 65 && <75)

次のようにする必要があります。

else if (this.age >= 65 && this.age <75)

15.23を読むことを強くお勧めします。条件付き And 演算子 &&およびif-then および if-then-else ステートメント.

また、一度も使用されていないパラメーターを持つことは冗長です。 を使用しない場合はage、メソッドのシグネチャから削除してください。

double calculatePersonalAllowance()

心配しないでageください。参照している はクラス メンバーであり、ローカル メンバーではありません。

于 2013-10-15T12:00:56.027 に答える
1

初め:

「Employee クラスに「年齢」のフィールドがあるため、年齢を超えてしまいました」

年齢を渡していません。次のことを行っています: (Employee age) age フィールドではなく、Employee オブジェクトへの参照を渡します。括弧内の「年齢」変数は、メソッドを呼び出した従業員オブジェクトを参照するメソッドにローカルな変数です。年齢を取得するには、参照している従業員オブジェクトから直接取得するか、ゲッターを介して取得する必要があります方法。

2 番目: If 式の読み取り方法は次のとおりです。

if(expression){do code}  //where expression returns either true or false

または、いくつかの演算子を使用します。

if(expression && expression)

あなたは次のように持っています:

else if (this.age >= 65 && <75){ 
//Which equates to the below:
else if(expression && <75){ 

コンパイラは式を期待していますが、オペランドを見つけています。メソッドに引数として age が渡されていますが、age という名前のフィールドにもアクセスしようとしているようです。メソッドの引数を (Employee emp) のようなものに変更することをお勧めします。次に、this.age がある場所を emp.age に変更します。

else if (emp.age >= 65 && emp.age <75){
//You effectively make
else if(expression && expression){

これはコンパイラを満足させます!

于 2013-10-15T12:10:07.027 に答える
1

私はthis.age変わる必要があり、変わる必要があるとemployee.age思います(this.age >= 65 && <75)if (employee.age >= 65 && employee.age<75)

以下の完全な方法。

 double calculatePersonalAllowance(Employee employee){
        double personalAllowance = 0;
    if (employee.age < 65) {
        personalAllowance = 94440;

    }else if (employee.age >= 65 && employee.age<75){
          personalAllowance = 10500;

    }else if (employee.age >75){
          personalAllowance = 10660;           
  }
      return personalAllowance;
 }
于 2013-10-15T12:11:05.363 に答える