簡體   English   中英

嘗試使用字符串數組從類創建新對象

[英]Trying to create a new object from a class using a string array

我有一個名為Player的類,其中有三個變量,其中一個是帶有十個值的字符串數組(playerInv)。 如何使用此Player類在我的主活動類中創建一個新的Player,數組中的每個索引都具有空值(“”)?

玩家類別:

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(int playerHP) {
        this.playerHP = playerHP;
    }

    public String setPlayerInv(int pos) {
        return playerInv[pos];
    }

    public void setPlayerInv(String inventory) {
        for (int i = 0; i < 10; i++) {
            this.playerInv[i] = playerInv[i];
        }
    }
}

在主要活動中初始化播放器

public void setupPlayer()
{
    thePlayer = new Player(0,100,);
}

謝謝!

首先,您的類構造函數中存在錯誤。 如果要獲取String數組作為構造函數參數,它應該看起來像這樣:

Player(int startPos, int startHP, String[] newInventory)
{
    playerPos = startPos;
    playerHP = startHP;
    playerInv = newInventory;
}

如果希望playerInv始終是大小為10的String數組,則它應該看起來像這樣。

Player(int startPos, int startHP)
{
    playerPos = startPos;
    playerHP = startHP;
    playerInv = new String[10];
}

然后,使用以下簡單方法創建一個新的Player對象:

thePlayer = new Player(0, 100);

重要的是,在第二種情況下,playerInv變量將包含對填充為null的String類型數組的引用。 因此表將如下所示:

[null, null, null, null, null, null, null, null, null, null]

如果您希望用空字符串(“”)填充數組,如下所示:

   ["","","","","","","","","",""]

然后,您還有至少兩種方法可以執行此操作:

Player(int startPos, int startHP)
{
    playerPos = startPos;
    playerHP = startHP;
    playerInv = new String[10];
    Arrays.fill(playerInv, "");
}

或者,您可以使用以下構造函數:

Player(int startPos, int startHP, String[] newInventory)
{
    playerPos = startPos;
    playerHP = startHP;
    playerInv = newInventory;
}

並在創建新的Player對象時執行以下操作:

String[] inventory = new String[10];
Arrays.fill(inventory, "");
Player thePlayer = new Player(0, 100, inventory);

在您的Player構造函數中:

Player(int startPos, int startHP, String[] newInventory)
{
    playerPos = startPos;
    playerHP = startHP;

    if (newInventory == null)
    {
        playerInv = new String[10];
        for (int i = 0; i < playerInv.length; i++)
        {
            playerInv[i] = "";
        }
    }
    else
    {
        playerInv = newInventory;
    }
}

然后致電:

thePlayer = new Player(0,100,null);

希望能幫助到你...

使用默認情況下滿足您要求的構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM