2016-01-14 4 views
1

У меня есть класс под названием 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,); 
} 

Спасибо!

+0

Хотите ли вы иметь нулевые значения или «» (пустая строка) в массиве? – Rozart

ответ

2

Для начала в конструкторе классов есть ошибка. Это должно выглядеть следующим образом, если вы хотите, чтобы получить массив строк в качестве параметра конструктора:

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

Что важно, во втором случае playerIn v будет содержать ссылку на массив типа String, заполненный нулем. Таким образом, таблица будет выглядеть следующим образом:

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

Если вы хотели бы иметь массив заполняется пустой строкой («») значения, выглядит следующим образом:

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

Тогда вы, по крайней мере, 2 способа сделать это:

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); 
+0

Это отлично поработало, спасибо. –

+0

Сделано! :) Еще одна проблема, с которой я сталкиваюсь, заключается в том, что мои myPlayer.getPlayerInv и thePlayer.setPlayerInv появляются как «не могу разрешить символ» в моем основном действии. Есть идеи? –

+0

У вас нет метода 'getPlayerInv()' в вашем классе 'Player'. Я предлагаю использовать IntelliJ, Eclipe или Netbeans IDE при написании кода в java, потому что они дадут вам советы по ошибкам на лету.:) – Rozart

0

В конструкторе игрока:

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

Надеется, что это помогает ...

0

Используйте конструктор, который делает то, что вы хотите по умолчанию.

Смежные вопросы