2012-12-27 2 views
0

세 번째 for 루프에 대한 질문이 있습니다. 어떻게 작동합니까?세 번째 for 루프는 어떻게 작동합니까?

public void outputBarChart() 
{ 
    System.out.println("Grade Distribution: \n"); 

    int frequency[] = new int[11]; 

    for(int oneGrade : grade) 
    { 
     ++frequency[oneGrade/10]; 
    } 

    for (int count = 0; count < frequency.length; count++) 
    { 
     if (count == 10) { 
      System.out.println("100"); 
     } 
     else { 
      System.out.printf("%02d-%02d: ", 
        count*10, count*10 + 9); 
     } 

     //the third for loop here ! 
     for (int star = 0; star < frequency[count]; star++){ 
      System.out.print("*"); 
     } 
     System.out.println(); 

    } 
} 

문제는 기계가 어떻게 별을 인쇄하는지 모르겠다는 것입니다.

+3

혼란에 대해 구체적으로 말씀해 주시겠습니까? 'frequency [count] '별을 연속으로 인쇄합니다. –

+0

정확하게 이해하지 못하는 부분은 무엇입니까? 그것은 반복을 할 때마다'*'를 출력하는 간단한 for 루프입니다. –

+3

디버거를 실행하고 실행을 추적하여 어떤 일이 발생하는지 확인합니다. –

답변

1

그럼 다음 코드를 통해 갈 수 :

그게 frequencey의 길이 이후 세 번째 루프 반복됩니다 11 시간을 포함 루프에 대한 두 번째. 좋아, 쉬웠다.

이제 세 번째 for 루프가 frequency[count] 회 반복됩니다.이 값은 알 수 없지만 정수입니다. 따라서 세 번째 루프는 단순히 별을 인쇄하는 것입니다. frequency[count] 번. 그 다음에는 세 번째 루프가 끝나고 두 번째 루프에 의해 개행 문자가 인쇄됩니다.

System.out.println("*" * frequency[count]); 
+0

워크 스루 덕분에 디버거가 잘 작동 했으므로 먼저 시도해야합니다. – Twocode

1

루프는 star 변수를 취해 루프가 증가하고 frequency[count] 값에 도달 할 때까지 증가합니다. 따라서 루프는 frequency[count]에 저장된 값과 동일한 횟수만큼 실행됩니다.

각 루프 반복은 별을 인쇄합니다. 마지막에 빈 줄을 인쇄합니다.

결과는 행의 수를 frequency[count]으로 인쇄합니다.

관련 문제