Player中的setPlayerHp()不能应用于整数

时间:2016-01-14 16:30:48

标签: java android class integer

我正在为我的课程编写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);


                }
            }
        }

4 个答案:

答案 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