2012-05-01 4 views
1

Мне было интересно, могу ли я иметь массив внутри массива? Я не могу придумать способ объяснить это.Java: массив внутри массива?

 if (numOfPlayers >= 2) { 
      this.config.getString("Tribute_one_spawn"); 
      String[] onecoords = this.config.getString("Tribute_one_spawn").split(","); 
      Player Tribute_one = (Player)this.Playing.get(0); 
      World w = p.getWorld(); 
      double x = Double.parseDouble(onecoords[0]); 
      double y = Double.parseDouble(onecoords[1]); 
      double z = Double.parseDouble(onecoords[2]); 
      Location oneloc = new Location(w, x, y, z); 
      Tribute_one.teleport(oneloc); 
      this.Frozen.add(Tribute_one); 
      Tribute_one.setFoodLevel(20); 
      this.config.getString("Tribute_two_spawn"); 
      String[] twocoords = this.config.getString("Tribute_two_spawn").split(","); 
      Player Tribute_two = (Player)this.Playing.get(1); 
      World twow = p.getWorld(); 
      double twox = Double.parseDouble(twocoords[0]); 
      double twoy = Double.parseDouble(twocoords[1]); 
      double twoz = Double.parseDouble(twocoords[2]); 
      Location twoloc = new Location(twow, twox, twoy, twoz); 
      Tribute_two.teleport(twoloc); 
      this.Frozen.add(Tribute_two); 
      Tribute_two.setFoodLevel(20); 
     } 
     if (numOfPlayers() >= 3) { 
      this.config.getString("Tribute_three_spawn"); 
      String[] coords = this.config.getString("Tribute_three_spawn").split(","); 
      Player Tribute_three = (Player)this.Playing.get(2); 
      World w = p.getWorld(); 
      double x = Double.parseDouble(coords[0]); 
      double y = Double.parseDouble(coords[1]); 
      double z = Double.parseDouble(coords[2]); 
      Location loc = new Location(w, x, y, z); 
      Tribute_three.teleport(loc); 
      this.Frozen.add(Tribute_three); 
      Tribute_three.setFoodLevel(20); 
     } 

Как вы можете видеть, я должен создать новый массив в любой другой лестнице для каждого игрока. Вместо того, чтобы делать 48 if-операторов, я могу изменить имя переменной coords Array, чтобы поместить ее в цикл for с помощью счетчика, увеличивающего имя массива. Ну, это был путаный способ объяснить это, но это лучшее, что я могу сделать.

+3

Хотя вполне возможно иметь массив массивов, обычно лучше создать новый класс, чтобы более точно представлять ваши данные. –

+0

Вам придется приложить все усилия, чтобы найти лучший способ объяснить вашу проблему. Однострочное описание вопроса и 20 строк кода - не очень хороший вопрос, и у вас будут ответы, похожие на комментарии или повсюду. Пожалуйста, сузите его. –

ответ

2

Короткий ответ да, то вы можете объявить массив как String[][] playerCoords, однако я хотел бы предложить, глядя на интерфейс Map, так как это может быть более подробным описанием того, что вы хотите сделать.

0

Вы можете обернуть ваш код в течение цикла, при условии, что вы можете переименовать конфигурационные переменные:

for (int i=1;i<numOfPlayers;i++) { 
      String[] onecoords = this.config.getString().split(","); 
      Player Tribute_i = (Player)this.Playing.get(i-1); 
      World w = p.getWorld(); 
      double x = Double.parseDouble(onecoords[0]); 
      double y = Double.parseDouble(onecoords[1]); 
      double z = Double.parseDouble(onecoords[2]); 
      Location oneloc = new Location(w, x, y, z); 
      Tribute_i.teleport(oneloc); 
      this.Frozen.add(Tribute_i); 
      Tribute_i.setFoodLevel(20); 
} 

ёр переменные конфигурации будет называться Tribute_1_spawn, Tribute_2_spawn и так далее ... Если вам нужно для дальнейшего использования объектов Player вы можете сохранить их в массиве или другой структуре данных.

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