作者comodore (Commodore)
看板java
標題[問題] 兩個迴圈輸出的順序問題
時間Wed May 21 23:05:41 2014
Hi,
小弟寫了兩個陣列, 分別用迴圈印出來, 小弟天真的以為第一個迴圈要印完之後,
才會在繼續跑第二個迴圈, 繼續印出來, 但結果卻不是這樣, 如下所示:
[source]
public static void main(String[] args){
int[] a = {1,2,3};
int[] b = Arrays.copyOf(a, a.length);
for(Integer i:a){
System.err.println("a:"+i);
}
for(Integer i:b){
System.out.println("b"+i);
}
}
[output]
a:1b1
a:2
a:3
b2
b3
請問這是為什麼啊?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.15.92
※ 文章網址: http://webptt.com/m.aspx?n=bbs/java/M.1400684744.A.13A.html
1F:推 b10030012:我試很正常啊 一迴圈完 換另一個 05/21 23:15
2F:→ kingofsdtw:測試後程式正常 05/22 00:36
3F:推 virve:每次跑都這樣嗎 05/22 00:53
4F:→ comodore:有時候正常, 有時候不正常 05/22 09:23
5F:→ forget2009:我覺得出這樣的結果很合理阿,要像你想的那種結果我會 05/22 11:11
6F:→ forget2009:用兩個Thread synchronized鎖住其中一個印完再解鎖 05/22 11:13
7F:→ forget2009:喔 抱歉沒看到上面那個b1... 05/22 11:15
8F:推 PsMonkey:他貼出來的 code 哪裡有 thread 阿阿阿阿 Orz 05/22 12:23
9F:→ danny8376:感覺這應該是IDE上的console的問題? 05/22 12:34
10F:→ comodore:不好意思, System.err.println("a:"+1); 05/22 20:01
11F:→ comodore:改成 System.out.println("a:"+i); 就不會了 05/22 20:02
※ 編輯: comodore (220.134.15.92), 05/22/2014 20:02:58
12F:推 LPH66:應是 stream 有沒有 buffer 的問題, 印象中 out 有 err 沒有 05/22 23:49
13F:→ swpoker:沒看到err out 阿 05/23 09:57
14F:→ comodore:to 樓上, 原po文內容有誤, 修正如推文 05/24 23:14