0

私のプログラムでは、prevScore[i] と prevScoreName[i] を返そうとしています。ただし、両方の return ステートメントには、互換性のない型であることを示すエラーがあります (必要な int[]、int が見つかりました)。メインプロジェクトでそれらを定義した方法のように感じます(以下の最初の2行)。どんな助けでも大歓迎です。

prevScore = scoreChange (prevScore, score);
prevScoreName = nameChange (prevScoreName, newName);

public static int[] scoreChange (int prevScore[], int score)
{
    for (i=1; i<prevScore.length;i++){
            prevScore[i] = score;
    }
    return prevScore[i];
}

public static String[] nameChange (String prevScoreName[], String newName)
{
    for (i=1; i<prevScoreName.length;i++){
            prevScoreName[i] = newName;
    }
    return prevScoreName[i];
}
4

3 に答える 3

7

各関数から 1 つの項目のみを返す場合は、戻り値の型をintandに変更しますString( int[]andではありませんString[])。配列全体を返したい場合は、return ステートメントをreturn prevScore;and return prevScoreName;(なし[i]) に変更します。

配列全体を返す必要はないことに注意してください - 呼び出し元はすでに配列への参照を持っています。戻り値の型を に変更しvoid、return ステートメントを削除し、呼び出しの前にある割り当てを取り除くだけです。

于 2012-07-24T19:32:13.617 に答える
3

配列を返していません:

return prevScoreName[i]; // Returns the String at index 'i'
return prevScore[i];     // Returns the integer at index 'i'

実際の配列を返したい場合は、次のものを失う必要があります[i]

return prevScoreName;   // Returns the array
return prevScore;       // Returns the array

さらに、何も返す必要さえありません。

prevScore = scoreChange (prevScore, score);
prevScoreName = nameChange (prevScoreName, newName);

関数呼び出しでこれらの配列の内容を変更しています。

于 2012-07-24T19:31:55.240 に答える
0

配列を理解していないようです。public static int[]配列全体を参照していると言うとき 。(その内容のすべてではなく、配列が存在するメモリ内のスペースを指しています。) public static int1つの整数だけを参照していると言うとき。

メソッドで、戻り型をとして宣言しました。これは、整数の配列全体int[]を返すことを意味します。しかし、あなたのステートメントは、たまたま配列に含まれている単一の整数であるを返そうとしていました。あなたが書いていたらそれは同じだっただろう:returnprevScore[i]

int var = prevScore[i];
return var;

この例では、整数を返していることがわかりやすくなっています。

整数の配列は整数と同じではないため、整数の配列が表示されることを期待しているときに単一の整数を返そうとしたときに、コンパイラは何をすべきかわかりませんでした。

于 2012-07-24T19:45:19.833 に答える