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

看板java作者 (Commodore)時間11年前 (2014/05/21 23:05), 11年前編輯推噓4(4010)
留言14則, 9人參與, 最新討論串1/1
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://www.ptt.cc/bbs/java/M.1400684744.A.13A.html

05/21 23:15, , 1F
我試很正常啊 一迴圈完 換另一個
05/21 23:15, 1F

05/22 00:36, , 2F
測試後程式正常
05/22 00:36, 2F

05/22 00:53, , 3F
每次跑都這樣嗎
05/22 00:53, 3F

05/22 09:23, , 4F
有時候正常, 有時候不正常
05/22 09:23, 4F

05/22 11:11, , 5F
我覺得出這樣的結果很合理阿,要像你想的那種結果我會
05/22 11:11, 5F

05/22 11:13, , 6F
用兩個Thread synchronized鎖住其中一個印完再解鎖
05/22 11:13, 6F

05/22 11:15, , 7F
喔 抱歉沒看到上面那個b1...
05/22 11:15, 7F

05/22 12:23, , 8F
他貼出來的 code 哪裡有 thread 阿阿阿阿 Orz
05/22 12:23, 8F

05/22 12:34, , 9F
感覺這應該是IDE上的console的問題?
05/22 12:34, 9F

05/22 20:01, , 10F
不好意思, System.err.println("a:"+1);
05/22 20:01, 10F

05/22 20:02, , 11F
改成 System.out.println("a:"+i); 就不會了
05/22 20:02, 11F
※ 編輯: comodore (220.134.15.92), 05/22/2014 20:02:58

05/22 23:49, , 12F
應是 stream 有沒有 buffer 的問題, 印象中 out 有 err 沒有
05/22 23:49, 12F

05/23 09:57, , 13F
沒看到err out 阿
05/23 09:57, 13F

05/24 23:14, , 14F
to 樓上, 原po文內容有誤, 修正如推文
05/24 23:14, 14F
文章代碼(AID): #1JVC384w (java)
文章代碼(AID): #1JVC384w (java)