[问题] 两个循环输出的顺序问题

楼主: 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