java初始化对象数组

时间:2017-01-24 20:38:51

标签: java arrays oop

//这是我的第一篇文章,请告诉我,如果我做错了什么。 :d

我最近开始“学习”Java,我刚开始编写一个小小的csgo皮肤管理器。我想为游戏中实现的每个皮肤添加一个对象,所以我开始使用一个对象数组。问题是游戏中有大约608个皮肤,我不想打字 if(i+1 == [ID]){weapons = new Skins("weaponName", "skinName", "randomQuality", "garbageCollection", i+1)} 超过600次,有没有更快的方法?

编辑:我在.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;
    }
}

2 个答案:

答案 0 :(得分:2)

但在你需要弄清楚如何解析ods之前。 (我建议转换为其他更简单的格式)

private void initSkins(){
            for(int i = 0; i < weapons.length; i++){
                weapons[i] = new Skins("weapon name", "skin name", "quality", "collection", 3);
            }
        }

答案 1 :(得分:0)

你最好的选择是将所有皮肤放入JSON文件中。 循环遍历文件并使用JSON创建对象。

如果你谷歌有很多库正在做这件事,包括如何序列化/反序列化对象的文档。

似乎还有一些尝试/工作数据库,您可以在其中检索JSON格式的皮肤。

如果您在CSV(Excel工作表)文件中有皮肤信息,您也可以使用它并从文件中读取一行,并在读取每一行后将该信息放入Skins类的构造函数中