【问题标题】:Trying to create a new object from a class using a string array尝试使用字符串数组从类创建新对象
【发布时间】:2016-04-20 05:03:08
【问题描述】:

我有一个名为 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,);
}

谢谢!

【问题讨论】:

  • 你想在你的数组中有一个空值或“”(空字符串)吗?

标签: java android arrays class


【解决方案1】:

在您的 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);

希望对你有帮助...

【讨论】:

    【解决方案2】:

    使用默认情况下生成你想要的构造函数。

    【讨论】:

      【解决方案3】:

      一开始,您的类构造函数中有一个错误。 如果您想将 String 数组作为构造函数参数,它应该如下所示:

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

      或者,如果您希望 playerInv 始终是大小为 10 的字符串数组,它应该看起来像这样。

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

      然后你创建一个新的Player 对象,简单:

      thePlayer = new Player(0, 100);
      

      重要的是,在第二种情况下 playerInv 变量将包含对填充为空的字符串类型数组的引用。所以表格将如下所示:

      [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);
      

      【讨论】:

      • 完成! :) 我遇到的另一个问题是我的 thePlayer.getPlayerInv 和 thePlayer.setPlayerInv 在我的主要活动中作为“无法解析符号”出现。有什么想法吗?
      • 你的Player 类中没有方法getPlayerInv()。我建议在用 java 编写代码时使用 IntelliJ、Ecipe 或 Netbeans IDE,因为它们会即时为您提供错误建议。 :)
      • 我已经更正了这一点。但是,我仍然在 Get 和 Set 方法上都得到“无法解析符号”:/
      • 很抱歉,但要回答这个问题,我需要查看整个代码。很可能任何 IDE 都可以帮助您修复代码。 :)
      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2021-06-20
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多