2017-01-24 3 views
0

// Это мое первое сообщение, поэтому скажите мне, если я сделал что-то неправильно. : Djava инициализировать массив объектов

Я недавно начал «обучение» Java, и я только начал кодировать немного csgo skin manager thingy. Я хотел добавить объект для каждого скина, реализованного в игре, поэтому я начал с массива объектов. Проблема в том, что в игре есть ~ 608 скинов, и я не хочу вводить if(i+1 == [ID]){weapons = new Skins("weaponName", "skinName", "randomQuality", "garbageCollection", i+1)} 600+ раз, есть ли более быстрый способ?

Edit: я получил всю информацию в файле .ods, так что «проблема» на самом деле о «кодовой структуре», а не инициализации самой

// Вот два класса, если они имеют отношение к вам:

package cs.skins; 
public class Main{ 
    private static final int NUMBER_OF_SKINS = 608; 

    private Skins[] weapons; 

    public Main(){ 
     weapons = new Skins[NUMBER_OF_SKINS]; 
     initSkins(); 
    } 

    private void initSkins(){ 
     for(int i = 0; i < weapons.length; i++){ 

        if(i+1 == 1){ 
      weapons[i] = new Skins(); 
      }else if(i+1 == 2){ 
       weapons[i] = new Skins(); 
      } 
     } 
    } 
} 

и:

package cs.skins; 

public class Skins { 

    private String weapon; 
    private String skin; 
    private String quality; 
    private String collection; 
    private int id; 
    private int numberOwned; 


    public Skins(String weapon, String skin, String quality, String collection, int id){ 
     this.weapon  = weapon; 
     this.skin  = skin; 
     this.quality  = quality; 
     this.collection = collection; 
     this.id   = id; 
     this.numberOwned = 0; 
    } 

    public String getWeapon() { 
     return weapon; 
    } 
    public void setWeapon(String weapon) { 
     this.weapon = weapon; 
    } 
    public String getSkin() { 
     return skin; 
    } 
    public void setSkin(String skin) { 
     this.skin = skin; 
    } 
    public String getQuality() { 
     return quality; 
    } 
    public void setQuality(String quality) { 
     this.quality = quality; 
    } 
    public String getCollection() { 
     return collection; 
    } 
    public void setCollection(String collection) { 
     this.collection = collection; 
    } 
    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public int getNumberOwned() { 
     return numberOwned; 
    } 
    public void setNumberOwned(int numberOwned) { 
     this.numberOwned = numberOwned; 
    } 
} 
+0

У меня не возник вопрос ... Если вы хотите просмотреть код, тогда опубликуйте его в [SE Code Review] (http://codereview.stackexchange.com /) –

+0

@Abhijith Я просил точно, что ответили на это, извините, если вы не получили ... Не могли бы вы рассказать мне, что я мог бы сказать более конкретно (если это слово)? –

+0

Вы упомянули «... структуру кода», а не сама инициализация ... 'в самом теле вопроса, если вам нужен обзор вашего рабочего кода, тогда CodeReview - это место. Приятно знать, что у вас есть то, что вы хотели :) –

ответ

0

Ваш лучший вариант имхо это поставить все скины в файл JSON. Прокрутите файл и создайте объекты из JSON.

Если вы google, есть много библиотек, которые делают именно это, включая документацию о том, как сериализовать/десериализовать объекты.

Похоже, что были некоторые попытки/рабочие базы данных, где вы можете извлекать скины в формате JSON.

Если у вас есть информация об Skin в файле CSV (Excel), вы также можете использовать это и прочитать строку из файла и поместить эту информацию в конструктор вашего класса Skins после прочтения каждой строки.

+0

CSV-файла было бы достаточно. –

+0

@ GrzegorzGórkiewicz правда, но зная, что вы получите CS: GO скины в основном в формате JSON от API и веб-сайтов, это облегчит ему :) – deW1

+0

большое спасибо за быстрый ответ, я могу просто загрузить lib. и импортировать его в проект Eclipse? Наверное, вы имеете в виду что-то вроде [this] (http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in-java-me). –

2

Но прежде чем вам нужно будет выяснить, как разбирать фокус. (Я бы предложил преобразование в другие упрощенные форматы)

private void initSkins(){ 
      for(int i = 0; i < weapons.length; i++){ 
       weapons[i] = new Skins("weapon name", "skin name", "quality", "collection", 3); 
      } 
     } 
Смежные вопросы