【发布时间】:2016-05-18 10:22:53
【问题描述】:
我有一个包含 90 个对象的文件,每个对象有 20 个属性。文件的每一行都有 1 个对象,所以我需要读取一行并将所有这 20 个属性分开,这样我就可以在一个对象中填充所有需要的信息,然后将该对象放入一个对象数组中。
我在 SO 上发现了一个问题,它做了类似的事情,但他们每行只有一个属性,所以他们只需要读取一行并将该行放入每个属性中,我的问题是我在一行中有 20 个属性,我怎样才能将它们分开?
编辑1:
感谢所有提供帮助的人,但现在我遇到了另一个问题。 我的代码如下:
public void loadGang(){
String currentline;
Gang g =new Gang();
String[] result= new String[50];
BufferedReader info;
try {
info = new BufferedReader(new FileReader("Gangs.txt"));
for(int i=0;i<90;i++){
currentline= info.readLine();
result=currentline.split(" ");
g.setName(result[0]);
g.setHire(Integer.parseInt(result[1]));
g.setUpkeep(Integer.parseInt(result[2]));
g.setCombat(Integer.parseInt(result[3]));
g.setDefense(Integer.parseInt(result[4]));
g.setTechlevel(Integer.parseInt(result[5]));
g.setStealth(Integer.parseInt(result[6]));
g.setDetect(Integer.parseInt(result[7]));
g.setChaos(Integer.parseInt(result[8]));
g.setControl(Integer.parseInt(result[9]));
g.setHeal(Integer.parseInt(result[10]));
g.setInfluence(Integer.parseInt(result[11]));
g.setResearch(Integer.parseInt(result[12]));
g.setStrenght(Integer.parseInt(result[13]));
g.setBlade(Integer.parseInt(result[14]));
g.setRange(Integer.parseInt(result[15]));
g.setFighting(Integer.parseInt(result[16]));
g.setMarts(Integer.parseInt(result[17]));
listgang.add(g);
System.out.println(listgang.get(i).getName());
}
info.close();
} catch ( IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我在线程“主”java.lang.ArrayIndexOutOfBoundsException: 1 中遇到“异常” 在 Game.loadGang(Game.java:30)" 所以这适用于文本文件的 7 行,但它停在那里,我认为“currentline = info.readLine();”存在某种问题部分是因为我尝试在那里打印,所以我可以查看它是否有效,但是当它到达那条线时,它没有产生任何输出,所以也许问题就在那里?这应该是数组越界的问题,但我看不到在哪里,有什么想法吗?
编辑 2: 我猜文件中存在问题或其他问题,因为我试图通过检查结果的长度来检查拆分是否正在发生,我看到该行中的输出为 1,所以该行中发生了一些事情......
编辑 3: 我做的!我在记事本中看不到的文件中有一个空行或其他内容,但我用写字板打开了 .txt 文件,我只是删除了该行,现在它可以正常工作了。
【问题讨论】:
-
到目前为止你做了什么?你能举一些例子吗?请提出更具体的问题。
-
嘿伙计,你知道该怎么做。但这不是代码请求的地方。
-
如果我知道该做什么我就不会问了,因为那是浪费时间...我查看了这篇文章stackoverflow.com/questions/23145416/…,我需要做类似的事情,但他每个都有一个属性行,我将所有属性都放在一行中,我只需要有人告诉我一种方法或在我阅读信息时需要分开的东西。或者我应该只将一整行读入一个字符串,然后从字符串中取出我需要的属性吗?对不起,如果我没有很好地解释自己,但我对 java 还不太了解
-
要“分离内容”,您可以“拆分”您的输入。怎么样,需要自己去想。如果是字符串,可以使用分隔符进行拆分。如果是二进制,则需要知道记录格式并解析记录。
-
感谢您的帮助。