我正在为我的课程编写Text Adventure应用程序,但我遇到了这个错误。我有一个名为Player的类,其中有三个变量关联(playerPos,playerHP和playerInv [])
当我尝试从Player类获取或设置playerHP的值时,我得到以下内容:
“get / setPlayerHP无法应用于(int)”
我很困惑为什么。有什么建议吗?
public class Player {
private int playerPos;
private int playerHP;
private String playerInv[];
Player(int startPos, int startHP, String[] newInventory[])
{
playerPos = startPos;
playerHP = startHP;
playerInv = newInventory[10];
}
public int getPlayerPos() {
return playerPos;
}
public void setPlayerPos(int playerPos) {
this.playerPos = playerPos;
}
public int getPlayerHP(){
return playerHP;
}
public void setPlayerHP(){
this.playerHP = playerPos;
}
public String setPlayerInv() {
return playerInv[10];
}
public void setPlayerInv(String inventory) {
for (int i=0; i<10; i++)
{
this.playerInv[i] = playerInv[i];
}
}
}
以下是我尝试使用它的实例:
public void PyrronQ1()
{
answerButton.setEnabled(true);
questionText.setText("What is my favourite colour?");
answerButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
if (answerText.getText().toString() == "Red")
{
PyrronQ2();
}
else
{
thePlayer.setPlayerHP(thePlayer.getPlayerHP() -20);
if (thePlayer.getPlayerHP() <= 0)
{
thePlayer.setPlayerPos(0);
setupControls();
RoomText.setText(thedungeon[thePlayer.getPlayerPos()].getName());
setupDirectionButtons();
thePlayer.setPlayerHP(100);
}
}
}
答案 0 :(得分:1)
您已经定义了一个不带参数的方法:
public void setPlayerHP(){
this.playerHP = playerPos;
}
因此,尝试将整数传递给此方法将无效。
您可能希望为此方法添加参数,例如:
public void setPlayerHP(int hp) {
// ...
}
答案 1 :(得分:1)
只是为了确保你看到到底发生了什么:
在你的onClick()方法中:
..
..
else
{
thePlayer.setPlayerHP(thePlayer.getPlayerHP() -20);
..
..
您正在将一个int作为参数传递给播放器类中的方法setPlayerHP(),但是如果您回顾一下方法定义:
public void setPlayerHP(){
this.playerHP = playerPos;
}
你会看到你没有参数定义 - 也就是说你没有告诉它把int作为参数。只需将其更改为
即可public void setPlayerHP(int hp) {
this.playerHP = hp;
}
正如上面提到的@Matteo。
通常调用setter方法,例如SetPlayerHp()等将采用参数。如果你考虑一下,你想要给一些变量赋予一些新的价值,它需要得到一些新的价值吗?当然还有其他方法。
答案 2 :(得分:0)
你在做:
public void setPlayerHP(){
this.playerHP = playerPos;
}
我认为它应该像
public void setPlayerHP(int hp){
this.playerHP = hp;
}
答案 3 :(得分:0)
你的方法setPlayerHp没有参数,所以它说请求的参数(none)不匹配(int)。当调用没有参数的setPlayerHp()时,你所做的就是将playerHp设置为playerPos。你需要像这样重新定义它:
Enabled