Java error-message - недопустимый тип 'void' здесь, при вызове метода, который возвращает целое число
Я просматривал различные форумы и сайты, пытаясь выяснить, где я иду не так, но безуспешно.
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 ответа
Ты звонишь lblP1Name.setText()
дважды (второй раз с "результатом" вызова lblP1Name.setText()
)
Так должно быть:
if(currPlayer == 0)
lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
else
lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
В этой части:
lblP1Name.setText(lblP1Name.setText(...
Метод setText()
получает String
и возвращает void, вы пытаетесь установить текст lblP1Name
но внутренний lblP1Name.setText
вернет пустоту.
Попробуйте это вместо этого:
public void updatePlayerLabels() {
if (currPlayer == 0)
lblP1Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
else
lblP2Name.setText(myPlayers[currPlayer].getName() + " - " + myPlayers[currPlayer].getScore());
}
Ваш код читает
lblP1Name.setText(lblP1Name.setText(.....));
Внутренний текстовый вызов set вернет пустоту, переданную внешнему вызову. Это вызывает ошибку.