Java 在进行下一次迭代之前,如何使for循环完全执行任务?
我试图在工作中解析一个文件,但由于某种原因,我的for循环在进入下一个迭代之前不会执行整个任务迭代 我这里有一个显示相同问题的示例代码,我认为如果我能修复这个简单的示例,我将能够修复工作中更复杂的问题 示例代码:Java 在进行下一次迭代之前,如何使for循环完全执行任务?,java,if-statement,for-loop,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
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);
}
}
}}
包循环;
公共类循环{
公共静态void main(字符串[]args){
System.out.println(“开始了”);
对于(int i=0;iStdout是缓冲的,stderr不是。将两者都打印到Stdout或两者都打印到stderr,不要将它们混合使用。这是因为System.out
和System.err
都可以缓冲流。这意味着数据放在流上时不会正确执行写入操作,而是分块执行
尝试在每次打印后立即刷新输出:
System.out.println(...);
System.out.flush();
通过这种方式,您将强制流在执行其他指令之前刷新其缓冲区。这可能会带来性能代价。在for循环中添加了System.out.flush(),结果相同。现在我知道您是正确的。添加System.out.flush()和System.err.flush()是正确的确实解决了问题。只需要刷新两个。这解决了问题,谢谢。