2

我浏览了各种论坛和网站,试图找出我哪里出错了,但没有运气。

public void updatePlayerLabels()
{
    if(currPlayer == 0)
        lblP1Name.setText(lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore()));
    else
        lblP2Name.setText(lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore()));
}

错误似乎出现在我在两个语句上调用 getScore() 方法的地方。我收到 2 条“此处不允许使用 'void' 类型”消息。这是播放器类的片段。

public Player(int number, String name)
{
    this.number = number;
    this.name = name;
    score = 0;
}

public int getScore()
{
    return score;
}

据我所知,我在构造函数中将 score 设置为 0 并且在调用该方法之前构造了播放器,因此我不应该看到该错误。

此外,我在代码的其他地方使用 getScore() 方法没有任何问题,我确信这是有问题的方法,因为当我从这两行中删除它时,错误消失了。

4

3 回答 3

2

你打lblP1Name.setText()了两次电话(第二次是打电话的“结果” lblP1Name.setText()

它应该是:

if(currPlayer == 0)
    lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
else
    lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
于 2012-01-29T15:01:42.643 回答
0

您的代码读取

 lblP1Name.setText(lblP1Name.setText(.....));

内部设置文本调用将返回传递给外部调用的 void。这会导致错误。

于 2012-01-29T15:01:35.977 回答
0

在这部分:

lblP1Name.setText(lblP1Name.setText(...

该方法setText()接收aString并返回void,您试图设置文本lblP1Name但内部lblP1Name.setText将返回void。

试试这个:

public void updatePlayerLabels() {
    if (currPlayer == 0)
        lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
    else
        lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
}
于 2012-01-29T15:04:53.647 回答