2011-03-11 150 views
0

我想写出我的数组的值到一个文件。写入磁盘文件不正确

public void Write(String fileName) throws IOException 
{ 

    PrintWriter outFile; 
    outFile = new PrintWriter(new FileWriter(fileName)); 

    for(int K = 0 ; K < CurrentCount ; K++) 
     outFile.println(List[K].toString()); 

    outFile.close(); 
} 

的数据输入到文件是:气象站@ 1194a4e

的气象站类有我的构造函数和get和set方法

List[K] = new WeatherStation(Location, Temp, Title, Air, Pollen); 

我期待所有的属性上面来获得放入文件中。

+0

...他们呢? – fredley 2011-03-11 00:55:50

+0

[How to support println in a class?](http://stackoverflow.com/questions/27647567/how-to-support-println-in-a-class) – Raedwald 2016-03-26 14:09:39

+0

http:// stackoverflow的可能重复.COM /问题/ 29140402 /如何-DO-I-打印我的Java对象,而无需-得到-sometype2f92e0f4 – Raedwald 2016-03-26 14:19:45

回答

3

如果您期望,那么您将需要覆盖toString为您的WeatherStation类。

默认是一个非常简单的输出类型和一个唯一的ID(不知道它是一个地址或散列在我头上)。

只需添加一个toString方法,该方法通过班级中的成员(您要打印的)并将它们连接成一个字符串。

此链接here在如何做到这一点上有一个很好的例子。你会这样做:

@Override public String toString() { 
    StringBuilder result = new StringBuilder(); 

    result.append (this.getClass().getName() + " {"); 
    result.append (" Location=[" + this.Location + "]"); 
    result.append (", Temp=[" + this.Temp + "]"); 
    // Other fields. 
    result.append (", Pollen=[" + this.Pollen + "]"); 
    result.append (" }"); 

    return result.toString(); 
    } 

这是未经测试,可能不是你想要的确切格式,但它应该是一个好的开始。

+0

而不是使用的ToString()我刚刚上市了\t \t \t outFile.println(列表[K]。的getLocation()); outFile.println(列表[K] .GetTemp());等等。有什么异议? – 5hits 2011-03-11 01:12:20

+0

@ 5hits,只是因为它不是真正的OO方式。不要误解我的意思,如果这对你有用,就去做吧。请记住,它解决了一个非常棘手的问题。如果代码的其他部分需要字符串表示呢?如果你改变了班级的内部,然后必须在一百个不同的地方去更换你的打印代码呢?借助面向对象,对象应理想地保持自己的数据和代码,以便所有内容都可以本地化。我个人宁愿看到问题完全解决,但有时实用主义打败纯度:-) – paxdiablo 2011-03-11 05:08:24

1

您需要在WeatherStation类中覆盖toString()以产生所需的输出。

1

简化你的生活!

  • a)初始化声明没有问题。
  • b)简化的for-loop是 - 很简单的。
  • c)如果你不传递一个基元或字符串给println,.toString()会自动调用。

比喻自己:

public void Write(String fileName) throws IOException 
{ 
    PrintWriter outFile = new PrintWriter (new FileWriter (fileName)); 
    for (WheatherStation ws : List) 
     outFile.println (ws); 
    outFile.close(); 
} 

而且 - 有没有人告诉你覆盖 '的toString'? ;) 我同意。

+0

谢谢,jzd,拼写更正。 – 2011-03-11 01:34:08