在执行 相反的* 操作时,您正在score
为参数分配类变量的值。换一种说法:sco
*
您的代码说:
sco = score;
但是您应该做的是:
score = sco;
在这两个功能,你需要 切换顺序 的
score和
sco使
score得到的价值
sco。
就您的错误而言,
setScore(float sco, intid)您在参数中定义
sco为a,
float但您尝试将其作为数组访问(通过说
sco[Id] = score)。这就是为什么您收到错误消息的原因。
The type of the expression must be an array type but it resolved to float
就像我说的,您可以通过再次切换顺序来解决此问题:
sco[Id] = score;
进入:
score[Id] = sco;
编辑:
就这一部分而言:
我对应该放在括号中的内容感到困惑,这本书要求我放置“ float []分数”>而不是“ float []
sco”,但是它不起作用,因此在进行了几次试验后我进行了一些编辑。这部分编码通常描述了重载方法,该方法存储了5个主题的分数。
由于您想知道如何对参数和类变量使用相同的名称(如@Smutje所述),因此应使用关键字
this。
这样,您就不会有任何歧义
score:
this.score
属于您的被调用类Score
,可以在该类内部的任何函数中使用。它对于班级中的所有内容都是可见的。score
是函数局部的函数参数setScore()
,只能在内部使用setScore()
。它仅在函数内部可见。
因此,包括所有提及的内容,您应该进行以下更改:
更改:
public void setScore(float sco, int id){ sco[id] = score;}void setScore(float[] sco){ sco = score;}至:
public void setScore(float score, int id) // changed sco to score{ this.score[id] = score; // switched order, added keyword this}void setScore(float[] score) // changed sco to score{ this.score = score; // switched order, added keyword this}


