-1

我有一个要制作成对象的信息文本文件。

文本文件如下所示:

mediterraneanAvenue 60 0 50 {2, 10, 30, 90, 250} 0

balticAvenue 60 0 50 {4, 20, 60, 180, 450} 0

等等。我可以控制文本文件,所以我可以以任何我需要的方式更改它。但是,有超过 30 个属性(是的,我正在制作 Monopoly),我正在寻找一种更有效的方法来复制数据。

我希望实现的是这样的镜像线:

Property mediterraneanAvenue = new Property (60, 0, 50, new int[]{2, 10, 30, 90, 250}, 0);

我在如何从文本文件中读取此信息时遇到问题。我从我的课程资源和互联网上做了一些研究;很难找到解决方案,而我发现的解决方案比简单地自己制作对象更加复杂和低效

我尝试过的是:

Property[] properties = new Property[28];

...

try {
BufferedReader br = new BufferedReader (new FileReader ("property card info"));
int i;
String lineContents;
while ((lineContents=br.readLine())!= null){
    String[] parts = lineContents.split(" ");
    properties[i] = new Property (Integer.parseInt(parts[0]), parts[1], parts[2], parts [3], parts[4], parts[5]);
i++;                
}
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}

我解析了减速的每个部分,但是当我复制代码时,我删除了除第一个之外的所有部分,以保持行短。我似乎在朝着正确的方向前进,但是我遇到了一个未定义的构造函数错误,并且无法弄清楚如何将作为数组的部分变成 int[]

4

2 回答 2

3

假设您有这样的课程:

public class Person {
  private String firstname;
  private String lastname;
  private PhoneNumber phone;
  private PhoneNumber fax;
  // ... constructors and methods
}

将其序列化为 XML,例如使用这个非常易于使用的库:

XStream xstream = new XStream();
Person joe = new Person("Joe", "Wayne");
String xml = xstream.toXML(joe); // now you can write XML for example to file

XML 将如下所示:

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>

如您所见,当您拥有 XML 中的对象时,即使在记事本中也很容易对其进行编辑。当然,稍后您可以进行反序列化:

Person newJoe = (Person) xstream.fromXML(xml);

它也是创建可编辑设置文件的简单快速技术,例如一些config.xml

于 2013-06-16T15:36:23.260 回答
0

尝试使用 json 存储加载您的对象 http://json.org/java/

于 2013-06-16T15:50:30.267 回答