2017-03-05 6 views
1

このメソッドはコンパイルされません。理由はわかりません。エラーは次のとおりです。偶数を返す方法

int iは、forループで定義されているシンボル変数i

を見つけることができません。このメソッドは、int aint bの間の偶数を返します。

コード:

public int partall(int a, int b){ 
    int partall; 
    int største; 
    int minste; 
    if(a == b){ 
     partall = 0; 
    }else{ 
     if(a>b) { 
     største = a; 
     minste = b; 
     }else if(a<b){ 
      minste = a; 
      største = b; 

      for(int i = minste; i<= største; i++){ 
       if(i % 2 == 0) { 
        partall = i; 
       } 
      } 

     } 

    } 
    return i; 
} 
+0

それが宣言のWHEREそれはだから 'i'は、ループの範囲にのみ表示されます。メソッドの中で 'i'を宣言すると、' return'ステートメントに表示されます。 – jlordo

+0

私はint minsteの下でint iを書こうとしましたが、まだエラーがあります。 – Akarlsen

+0

同じエラーですか、別のエラーですか? – jlordo

答えて

1

はあなただけfor loopないことの外にスコープを持つiを戻ってきています。

具体的には、partallを返信したいと思うかもしれませんが、iは返さないと思います。何かで

初期partall、すなわち

int partall = 0;

+0

ありがとう、この作品は魅力のようです – Akarlsen

2

iはなく、外部、forループの範囲でのみ表示されます。 return i;を実行すると、範囲外です。だから、forの外に宣言を置く必要があります。

ソリューション:

public int partall(int a, int b){ 
    int partall; 
    int største; 
    int minste; 
    int i = 0; 
    if(a == b){ 
     partall = 0; 
    }else{ 
     if(a>b) { 
      største = a; 
      minste = b; 
     }else if(a<b){ 
      minste = a; 
      største = b; 

      for(i = minste; i<= største; i++){ 
       if(i % 2 == 0) { 
        partall = i; 
       } 
      } 

     } 

    } 
    return i; 
} 
+0

残念ながら、私はまだintが私が定義されていないという同じエラーを受けました – Akarlsen

+0

@Akarlsen変更を加えた後にコードを再コンパイルする必要があります。古い.classファイル –

+0

を選択している可能性があります。これは、iが初期化されていない可能性があるため、コンパイルエラーが発生します。値に初期化する必要があります。 –

0

変数iがスコープ内に表示されていない動作するはずです最後の行

return partall;

でのステートメント。 returnの範囲内に表示されるには、forループの外側で、if-elseの外側にあるiを宣言する必要があります。残りの変数を宣言する関数の先頭でint i = 0;(またはint i = minste;さえも、以下の割り当てを削除してください)を宣言してみてください。

0

あなたが「partall」を初期化し、その変数を返す必要があります:

public int partall(int a, int b){ 
    int partall = 0; 
    int største; 
    int minste; 
    if(a == b){ 
     partall = 0; 
    }else { 
     if(a>b) { 
     største = a; 
     minste = b; 
    } else if(a<b) { 
     minste = a; 
     største = b; 

    for(int i = minste; i<= største; i++){ 
     if(i % 2 == 0) { 
      partall = i; 
     } 
    } 

    } 

} 
return partall; 

}

関連する問題