Java error-message - недопустимый тип 'void' здесь, при вызове метода, который возвращает целое число - PullRequest
2 голосов
/ 29 января 2012

Я просматривал различные форумы и сайты, пытаясь выяснить, где я ошибаюсь, но безуспешно.

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;
}

Насколько я могу судить, я не должен видеть эту ошибку, так как я устанавливаю счетчик 0 в конструкторе и создаю проигрыватели до вызова этого метода.

Также я без проблем использую метод getScore () в другом месте кода, я уверен, что это проблемный метод, так как при удалении его из этих двух строк ошибка исчезает.

Ответы [ 3 ]

2 голосов
/ 29 января 2012

Вы звоните lblP1Name.setText() дважды (второй раз с «результатом» вызова lblP1Name.setText())

Это должно быть:

if(currPlayer == 0)
    lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
else
    lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
0 голосов
/ 29 января 2012

В этой части:

lblP1Name.setText(lblP1Name.setText(...

Метод setText() получает String и возвращает 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());
}
0 голосов
/ 29 января 2012

Ваш код читает

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

Внутренний текстовый вызов набора вернет пустоту, переданную внешнему вызову.Это вызывает ошибку.

...