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;
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++;
}
问题是数组中只存储了 1 名熟练人员,我对如何解决这个问题一无所知。
解决方案
主要问题在这里:
Skill_List = new Skill[] { new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain) };
Skill_List
您每次都覆盖旧变量,因此您只有 1 个项目。你可以这样做:
Skill_List[j] = new Skill(Name, Type, Desc, Skill_Level, Effect, Effect2, Manacost, Cooldown, Skill_From, Power_Gain);
但在您这样做之前,您需要提前知道数组将容纳多少项目,并创建具有该数量的数组。所以你会改变
Skill[] Skill_List = null;
至
Skill[] Skill_List = new Skill[10];
但这将您限制为 10 个技能。更好的选择是使用List
. 这些容器可以容纳可变数量的数据。
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));
每次调用add
列表都会增长 1。如果你真的想要一个数组,可以toArray()
在构建列表后调用该函数。
推荐阅读
- cordova - 通过 Ionic 4 上的硬件后退按钮关闭应用程序
- django - 部署在 DigitalOcean 上的 Django 应用程序的配置
- php - 使用 PayPal 结账 REST 进行捐赠是否需要服务器端验证?
- python - 我有一个简单的二叉树,我正在尝试找到树的最后一个节点
- asp.net-core - 在 asp.net core 3.1 中的 kendo ui 网格上绑定失败
- flutter - 流生成器中的快照上的数据 = null
- rbenv - Rbenv:安装 ruby 时如何有两个或多个 RUBY_CONFIGURE_OPTS?
- c# - 为什么用户控件不从视图模型绑定?
- swift - 如何在 SwiftUI 列表中显示字典数组?
- git - 如何解决 Git 报告无效的 sha1 指针 00000000000000000000000000000000000000000?