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() メソッドを呼び出した場所に表示されるようです。「'void' type not allowed here」というメッセージが 2 つ表示されます。これはプレーヤークラスのスニペットです。

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

public int getScore()
{
    return score;
}

私が知る限り、コンストラクターでスコアを 0 に設定し、そのメソッドが呼び出される前にプレーヤーを構築するため、そのエラーは表示されません。

また、コードの他の場所で getScore() メソッドを問題なく使用しています。これらの 2 行から削除するとエラーが消えるため、これは問題のあるメソッドであると確信しています。

4

3 に答える 3

2

あなたはlblP1Name.setText()2回呼び出しています(呼び出しの「結果」で2回目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(.....));

内側の set text 呼び出しは、外側の呼び出しに渡された void を返します。これにより、エラーが発生します。

于 2012-01-29T15:01:35.977 に答える
0

この部分では:

lblP1Name.setText(lblP1Name.setText(...

メソッドは a をsetText()受け取り、Stringvoid を返します。テキストを設定しようとしています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 に答える