[問題] 兩個迴圈輸出的順序問題

作者: comodore (Commodore)   2014-05-21 23:05:41
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
請問這是為什麼啊?
謝謝
作者: b10030012 (以後再說)   2014-05-21 23:15:00
我試很正常啊 一迴圈完 換另一個
作者: kingofsdtw (不能閒下來!!)   2014-05-22 00:36:00
測試後程式正常
作者: virve (std::vie)   2014-05-22 00:53:00
每次跑都這樣嗎
作者: comodore (Commodore)   2014-05-22 09:23:00
有時候正常, 有時候不正常
作者: forget2009 (皮卡瘡)   2014-05-22 11:11:00
我覺得出這樣的結果很合理阿,要像你想的那種結果我會
作者: forget2009 (皮卡瘡)   2014-05-22 11:13:00
用兩個Thread synchronized鎖住其中一個印完再解鎖
作者: forget2009 (皮卡瘡)   2014-05-22 11:15:00
喔 抱歉沒看到上面那個b1...
作者: PsMonkey (痞子軍團團長)   2014-05-22 12:23:00
他貼出來的 code 哪裡有 thread 阿阿阿阿 Orz
作者: danny8376 (釣到一隻猴子@_@)   2014-05-22 12:34:00
感覺這應該是IDE上的console的問題?
作者: comodore (Commodore)   2014-05-22 20:01:00
不好意思, System.err.println("a:"+1);
作者: comodore (Commodore)   2014-05-22 20:02:00
改成 System.out.println("a:"+i); 就不會了
作者: LPH66 (-6.2598534e+18f)   2014-05-22 23:49:00
應是 stream 有沒有 buffer 的問題, 印象中 out 有 err 沒有
作者: swpoker (swpoker)   2014-05-23 09:57:00
沒看到err out 阿
作者: comodore (Commodore)   2014-05-24 23:14:00
to 樓上, 原po文內容有誤, 修正如推文

Links booklink

Contact Us: admin [ a t ] ucptt.com