2011-03-11 117 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