0

在我的程序中,我试图返回 prevScore[i] 和 prevScoreName[i]。但是,两个返回语句都有错误,指出它们是不兼容的类型(需要 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

如果您只想从每个函数返回一项,请将返回类型更改为intand String(而不是int[]and String[])。如果要返回整个数组,请将返回语句更改为return prevScore;and return prevScoreName;(不带[i])。

请注意,无需返回整个数组 - 调用者已经拥有对它的引用。只需将返回类型更改为void,删除返回语句,并摆脱调用前的分配。

于 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 int你只指一个整数时。

在您的方法中,您将返回类型声明为int[],这意味着您将返回整个整数数组。但是您的return语句试图返回prevScore[i],它是一个整数,恰好包含在数组中。如果你写的是:

int var = prevScore[i];
return var;

在此示例中,您更容易看到您正在返回一个整数。

整数数组与整数不同,因此当您尝试返回单个整数时,编译器不知道该怎么做,而它期望看到整数数组。

于 2012-07-24T19:45:19.833 回答