2013-04-10 83 views
1

我收到上面的錯誤,當我嘗試這個的方法寫(INT)在類型的BufferedWriter不適用於參數(長)

for (int i = 0 ; i < uaCount.get(args[1]).occurrences ; i++) 
    { 
     out.write(uaCount.get(args[1]).singleValues.get(i)); 
    } 

紀錄和singleValues這裏定義:

public static class NumberHolder 
{ 
    public int occurrences = 0; 
    public int sumtime_in_milliseconds = 0; 
    public ArrayList<Long> singleValues = new ArrayList<Long>(); 
} 

有什麼辦法來解決此問題?

+0

嗯,我們一無所知'uaCount',這於事無補。你想達到什麼目的? – 2013-04-10 19:44:57

+0

你需要定義你期望的輸出...... – 2013-04-10 19:48:30

+0

uaCount是我的散列表,我只是試圖一行一行地輸出'singleValues',我會在''後面加'out.newLine();' out.write'聲明 – user2007843 2013-04-10 19:48:51

回答

5

鑑於問題的標題,我猜測是,你只是想用String.valueOf創建一個字符串:

for (int i = 0 ; i < uaCount.get(args[1]).occurrences ; i++) 
{ 
    out.write(String.valueOf(uaCount.get(args[1]).singleValues.get(i))); 
} 

注意,就會有值,雖然方式之間沒有分隔。我還建議,爲便於閱讀,你會寫這樣的:

NumberHolder holder = uaCount.get(args[1]); 
for (int i = 0; i < holder.occurrences; i++) 
{ 
    long value = holder.singleValues.get(i); 
    out.write(String.valueOf(value)); 
    // Maybe out.write(" ") or something similar, as a separator? 
} 

此外,我強烈建議不要使用公共領域你目前做的事情。嘗試更仔細地封裝你的類型。如果occurrences實際上是列表的大小,你可以使用增強for循環把事情簡單化。例如:

for (long value : uaCount.get(args[1]).getSingleValues()) { 
    out.write(String.valueOf(value)); 
} 
+0

[參考'String.valueOf'文檔](http://docs.oracle .com/javase/7/docs/api/java/lang/String.html#valueOf(long)) – ajp15243 2013-04-10 19:50:35

-2

將其更改爲 (int)(long)out.write(uaCount.get(args[1]).singleValues.get(i));。 你要投長整數

+0

爲什麼要使用'Long#intValue'來強制轉換所有的內容 – 2013-04-10 19:46:54

+0

而BufferedWriter把int當作字符來處理,它不是OP的意圖。 – Aubin 2013-04-10 19:51:00

0

更改:

public ArrayList<Long> singleValues = new ArrayList<Long>(); 

public ArrayList<Integer> singleValues = new ArrayList<Integer>(); 

將消除錯誤。當然,您將要避免在singleValues中放置任何long或long值。

相關問題