2014-06-19 1 views
0

직장에서 파일을 구문 분석하려고하지만 어떤 이유로 my for 루프가 다음 반복 작업을 진행하기 전에 전체 반복 작업을 실행하지 않습니다.어떻게 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); 
     } 
    } 
}} 

위의 코드가 실행되고 루프 "I"빨간색의 반복을 인쇄합니다. if 문을 통과하여 i + 1을 검정색으로 인쇄합니다. 내 문제는 빨강 검정 검정 대신 for 루프 "i"인쇄물을 끝내기 오래 전에 if 문을 완료한다는 것입니다. 이 루프를 순서대로 진행할 수있는 방법이 있습니까? 각 반복 후에 잠을 자려고했지만 해결하지는 못합니다.

감사합니다.

답변

0

System.outSystem.err 모두 버퍼링 된 스트림이 될 수 있기 때문입니다. 즉, 데이터가 스트림에 배치 될 때 바로 쓰기가 수행되지 않고 청크로 작성됩니다.

바로 각 인쇄 한 후 출력을 씻어보십시오 :

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

이 방법으로 다른 명령을 실행하기 전에 버퍼를 플러시 스트림을 강제 할 것이다. 이것은 성능 비용과 함께 올 수 있습니다.

+0

은 동일한 결과를 갖는 for 루프 내부에 System.out.flush()를 추가했습니다. – Jeremy

+0

나는 당신이 올바른 잭이라는 것을 알았습니다. System.out.flush() 및 System.err.flush()를 추가하면 문제가 해결됩니다. 그냥 둘 다 플러시해야했습니다. – Jeremy

0

표준 출력이 버퍼링되지만 표준 오류는 버퍼링되지 않습니다. stdout 또는 둘 다 stderr에 인쇄하십시오. 혼합하지 마십시오.

+0

이 문제가 해결되었습니다. 감사합니다. – Jeremy

관련 문제