Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环内创建对象_Java - Fatal编程技术网

Java 在循环内创建对象

Java 在循环内创建对象,java,Java,我正在制作一个基于文本的游戏,在循环中创建对象时遇到问题 这是我的密码 int i = 1; Skill[] Skill_List = null; String[] Skill_Info; File directory = new File("D:\Program Files\Game_dev2\src\Database\Skills"); int FileCount = directory.list().length;

我正在制作一个基于文本的游戏,在循环中创建对象时遇到问题

这是我的密码

int i = 1;
        Skill[] Skill_List = null;
        String[] Skill_Info;
        File directory = new File("D:\Program Files\Game_dev2\src\Database\Skills");
        int FileCount = directory.list().length;
        while (i < FileCount - 1) {
            Scanner Skill_Info_Data = new Scanner(
                    new File("D:\Program Files\Game_dev2\src\Database\Skills\Skill" + (i) + ".csv"));
            int j = 0;
            while (Skill_Info_Data.hasNext()) {
                Skill_Info = Skill_Info_Data.nextLine().split(",");
                String Name = Skill_Info[0];
                String Type = Skill_Info[1];
                String Desc = Skill_Info[2];
                int Skill_Level = Integer.parseInt(Skill_Info[3]);
                int Effect = Integer.parseInt(Skill_Info[4]);
                int Effect2 = Integer.parseInt(Skill_Info[5]);
                int Manacost = Integer.parseInt(Skill_Info[6]);
                int Cooldown = Integer.parseInt(Skill_Info[7]);
                String Skill_From = Skill_Info[8];
                int Power_Gain = Integer.parseInt(Skill_Info[9]);

                Skill_List = new Skill[] { new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown,
                        Skill_From, Power_Gain) };
                j++;
            }
            i++;
        }
inti=1;
Skill[]Skill\u List=null;
字符串[]技能信息;
文件目录=新文件(“D:\Program Files\Game\u dev2\src\Database\Skills”);
int FileCount=directory.list().length;
而(i

问题是,阵列中只存储了1个存储单元,我不知道如何解决这个问题。

主要问题是:

Skill_List = new Skill[] { new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain) };
每次都会覆盖旧的
Skill\u列表
变量,因此只有一项。您可以这样做:

Skill_List[j] = new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain);
但在此之前,您需要提前知道阵列将容纳多少项,并使用该数量创建阵列。所以你会改变

Skill[] Skill_List = null;

但这限制了你10项技能。更好的选择是使用
列表
。这些容器可以保存不同数量的数据

ArrayList<Skill> Skill_List = new ArrayList<Skill>();  // Create empty list
//...
Skill_List.add(new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain));
ArrayList Skill\u List=new ArrayList();//创建空列表
//...
技能列表。添加(新技能(名称、类型、描述、技能等级、效果、效果2、法力消耗、冷却、技能来源、力量获得);

每次调用
add
时,列表将增加1。如果确实需要数组,可以在构建列表后调用
toArray()
函数。

主要问题如下:

Skill_List = new Skill[] { new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain) };
每次都会覆盖旧的
Skill\u列表
变量,因此只有一项。您可以这样做:

Skill_List[j] = new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain);
但在此之前,您需要提前知道阵列将容纳多少项,并使用该数量创建阵列。所以你会改变

Skill[] Skill_List = null;

但这限制了你10项技能。更好的选择是使用
列表
。这些容器可以保存不同数量的数据

ArrayList<Skill> Skill_List = new ArrayList<Skill>();  // Create empty list
//...
Skill_List.add(new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain));
ArrayList Skill\u List=new ArrayList();//创建空列表
//...
技能列表。添加(新技能(名称、类型、描述、技能等级、效果、效果2、法力消耗、冷却、技能来源、力量获得);

每次调用
add
时,列表将增加1。如果确实需要数组,可以在构建列表后调用
toArray()
函数。

因为您只为该变量指定了一个元素数组。如果您想添加内容,请使用列表,然后添加到其中。对于本网站来说,这可能太广泛了,因为它涉及到一些非常基本的内容,最好通过教程提供。因为您只为该变量指定了一个元素数组。如果你想添加内容,请使用列表,然后添加到列表中。对于本网站来说,这可能太广泛了,因为它涉及到一些非常基本的内容,最好通过教程提供。