在进行下一次迭代之前,如何完成for循环执行任务?

时间:2014-06-19 00:02:22

标签: java if-statement for-loop

我正在尝试解析工作中的文件但由于某种原因,我的for循环在执行下一次迭代之前不会执行整个迭代的任务。

我在这里有一个示例代码,显示了相同的问题,我认为如果我能解决这个简单的例子,我将能够解决我工作中更复杂的问题。

示例代码:

package loops;
public class Loops {
    public static void main(String[] args) {
    System.out.println("here goes");
    for(int i=0;i<1000;i++){
        System.err.println(i);
        if(i==i){
            System.out.println(i+1);
        }
    }
}}

上面的代码运行并打印循环的迭代&#34; i&#34;红色的。它通过if语句并以黑色打印i + 1。我的问题是,它不是红黑色的黑色,而是在完成for循环之前很长时间才完成if语句&#34; i&#34;打印输出。有没有办法让这个循环按顺序排列?我试图让它在每次迭代后都进入睡眠状态,但这并没有解决它。

感谢。

2 个答案:

答案 0 :(得分:0)

Stdout是缓冲的,stderr不是。将stdout或两者都打印到stderr,不要混合它们。

答案 1 :(得分:0)

这是因为System.outSystem.err都可以是缓冲流。这意味着当数据放在流上而不是块中时,写入不会立即执行。

尝试在每次打印后立即刷新输出:

System.out.println(...);
System.out.flush();

通过这种方式,您将强制流在执行其他指令之前刷新缓冲区。这可能会带来性能成本。