뇌운동일지

[JAVA04_(1)] for문의 ★ 출력 예제 7가지 본문

JAVA

[JAVA04_(1)] for문의 ★ 출력 예제 7가지

purpleduck 2020. 3. 27. 18:07

1.

for (int i = 0; i < 5; i++) {

        System.out.print("★");

}

 

 

for(초기식; 조건식; 증감식) 이다. 초기식은 최초 1회만 수행한다.

(아래의 문제에서 중복되는 설명은 생략할것임)

 

반복해야 실행문인 System.out.print() method 실행되면 줄바꿈없이 ()안의 내용을 console 출력하게 된다.

 

반복문을 실행하면

 

초기식을 실행하여 int 지역변수 i 선언하고, i 0 대입.

 

i = 0 , 조건식 i<5 true이므로, i = 0 , 실행문 수행하여 출력. i++ 실행하여 i 1증가시킴.

 

i = 1 , 조건식 i<5 true이므로, 실행문 수행하여 출력. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 2 , 조건식 i<5 true이므로, 실행문 수행하여 출력. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 3 , 조건식 i<5 true이므로, 실행문 수행하여 출력. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 4 , 조건식 i<5 true이므로, 실행문 수행하여 출력. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 5 , 조건식 i<5 false이므로, 반복문 탈출.

 

따라서 ★ 5개가 같은 라인에 연속적으로 출력됨.

 

2.

for (int i = 0; i < 5; i++) {

        System.out.println("★");

}

 

 

반복해야 실행문인 System.out.println() method 실행되면 console () 값을 출력하고 줄바꿈을 수행한다.

 

반복문을 실행하면

 

초기식을 실행하여 int 지역변수 i 선언하고, i 0 대입.

 

i = 0 , 조건식 i<5 true이므로, i = 0 , 실행문 수행하여 출력하고 줄바꿈. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 1 , 조건식 i<5 true이므로, 실행문 수행하여 출력하고 줄바꿈. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 2 , 조건식 i<5 true이므로, 실행문 수행하여 출력하고 줄바꿈. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 3 , 조건식 i<5 true이므로, 실행문 수행하여 출력하고 줄바꿈. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 4 , 조건식 i<5 true이므로, 실행문 수행하여 출력하고 줄바꿈. 증감식 i++ 실행하여 i 1증가시킴.

 

i = 5 , 조건식 i<5 false이므로, 반복문 탈출.

 

따라서 라인에 하나씩 5 출력됨.

 

 

3. 

for (int i = 0; i < 5; i++) {

        for (int j = 0; j < 5; j++) {

               System.out.print("★");

        }

        System.out.println();

}

 

 

이중 for문을 활용함.

내부 for문은 1 문제와 동일함.

 

실행문의 print(), println() 위에서 설명했으므로 설명 생략.

 

외부 for문부터 실행.

외부 for문의 초기식으로 for문의 지역변수 i 선언하고 i 0대입.

i = 0 , 조건식 i<5 true, 내부 for 수행. 내부 for문의 수행결과는 1 문제의 설명과 동일하므로 생략 (1 문제에서는 변수 i 사용하였고, 3 문제에서는 j 사용하였으나, 이는 수학적 증명에서 중요하게 고려하지 않는 변수 이름의 차이일 뿐이므로, 문제삼지 않을 것임. 이하 내부for 수행결과에 대한 설명 생략).

 

j 내부 for문의 지역변수이므로, 내부 for 종료 j 대입되어 있던 값은 이상 기억되지 않는다. ( 이하 동일 설명 생략 )

 

 내부 for 수행 완료 println() method 수행. 외부 for문의 실행문들을 모두 처리하였으므로 증감식 수행하여 i 1증가시킴.

 

i = 1 , 조건식 i<5 true, 내부 for 수행. println() 수행. i 1증가.

 

i = 2 , 조건식 i<5 true, 내부 for 수행. println() 수행. i 1증가.

 

i = 3 , 조건식 i<5 true, 내부 for 수행. println() 수행. i 1증가.

 

i = 4 , 조건식 i<5 true, 내부 for 수행. println() 수행. i 1증가.

 

i = 5 , 조건식 i<5 false이므로 반복문 탈출.

 

따라서  내부 for문의 지역변수 j 1증가시, 하나가 출력되고,

외부 for문의 지역변수 i 1 증가 , ★★★★★ 한줄이 출력되는 것을 확인할 있음.

 

위와 같은 결과를 확인할 있다.

 

 

4.

for (int i = 1; i <= 5; i++) {

        for (int j = 1; j <= i; j++) {

               System.out.print("★");

        }

        System.out.println();

}

 

for문의 초기식에서 지역변수의 선언과 초기화에 대한 설명은 이제부터 생략. 자세한 내용은 위의 문제에 대한 풀이를 참고할 .

 

i 외부 for문의 지역변수, j 내부 for문의 지역변수.

 

i = 1 , i<=5 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 1 반복 탈출. println()수행. 증감식 i++ 수행하여 i 1 증가.

(Console 라인 출력을 예상할 있음. )

 

i = 2 , i<=5 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 2 반복 탈출. println()수행. 증감식 i++ 수행하여 i 1 증가.

(Console 두번째 라인 ★★ 출력을 예상할 있음. )

 

i = 3 , i<=5 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 3 반복 탈출. println()수행. 증감식 i++ 수행하여 i 1 증가.

(Console 세번째 라인 ★★★ 출력을 예상할 있음. )

 

i = 4 , i<=5 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 4 반복 탈출. println()수행. 증감식 i++ 수행하여 i 1 증가.

(Console 네번째 라인 ★★★★ 출력을 예상할 있음. )

 

i = 5 , i<=5 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 5 반복 탈출. println()수행. 증감식 i++ 수행하여 i 1 증가.

(Console 다섯번째 라인 ★★★★★ 출력을 예상할 있음. )

 

i = 6 , i<=5 false. 이중반복문 탈출.

 

따라서 위와 같은 결과를 확인할 있다.

 

5.

for (int i = 5; i >= 1; i--) {

        for (int j = 1; j <= i; j++) {

               System.out.print("★");

        }

        System.out.println();

}

4번의 문제와 유사한 형태이다. 내부 for문이 동일한 것을 확인할 있다.

4번의 문제와 다른 점은 외부for문의 지역변수 i 초기값이 5이며, i 감소하는 형태라는 것이다.

 

i = 5 , i>=1 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 5 반복 탈출. println()수행. 증감식 i-- 수행하여 i 1 감소.

(Console 첫번째 라인 ★★★★★ 출력을 예상할 있음. )

 

i = 4 , i>=1 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 4 반복 탈출. println()수행. 증감식 i-- 수행하여 i 1 감소.

(Console 두번째 라인 ★★★★ 출력을 예상할 있음. )

 

 

i = 3 , i>=1 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 3 반복 탈출. println()수행. 증감식 i-- 수행하여 i 1 감소.

(Console 세번째 라인 ★★★ 출력을 예상할 있음. )

 

 

i = 2 , i>=1 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 2 반복 탈출. println()수행. 증감식 i-- 수행하여 i 1 감소.

(Console 네번째 라인 ★★ 출력을 예상할 있음. )

 

i = 1 , i>=1 true. 내부 for문의 초기식 int j=1, 조건식 j<=i이므로 내부 for 1 반복 탈출. println()수행. 증감식 i-- 수행하여 i 1 감소.

(Console 다섯번째 라인 출력을 예상할 있음. )

 

i = 0 , i>=1 false. 이중 반복문 탈출.

 

따라서 위와 같은 실행결과.

 

6.

for (int i = 1; i <= 5; i++) {

        for (int j = 5; j >= 1; j--) {

               if (j > i) {

                       System.out.print("☆");

                } else {

                       System.out.print("★");

               }

 

        }

        System.out.println();

}

 

 

위의 문제들과 중복되는 설명은 생략.

 

4,5 문제의 내부 for문의 조건식은 j<=i였으므로, 외부 for 문의 지역변수 i 값이 내부 for문의 반복 횟수에 영향을 주었다. 그러나 문제6 내부 for문의 반복 횟수는 내부 for 지역변수 i 영향을 받지 않는다.

 

아래에서 for문의 조건식 확인, 증감식 수행, 내부 for 탈출 외부for문의 실행문 println(), 이중 for문의 탈출 등에 대한 자세한 설명을 생략할 것이므로, 자세한 사항은 위의 문제풀이를 참조할 .

 

i = 1 ,

j = 5 , j>=1 true. if문의 조건식 j>i true이므로 출력 예상. (이하 자세한 설명 생략)

j = 4, j>=1 true. j>i true, 출력.  

j = 3, j>=1 true. j>i true, 출력.

j = 2, j>=1 true. j>i true, 출력.

j = 1, j>=1 true. j>i false, else block 안의 실행문을 수행하여 출력 예상.

 

i = 2 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i true, 출력.

j = 3, j>=1 true. j>i true, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

i = 3 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i true, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

 

i = 4 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i false, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

 

i = 5 ,

j = 5, j>=1 true. j>i false, 출력.

j = 4, j>=1 true. j>i false, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

7.

for (int i = 5; i >= 1; i--) {

        for (int j = 5; j >= 1; j--) {

               if (j > i) {

                       System.out.print("☆");

               } else {

                       System.out.print("★");

               }

        }

        System.out.println();

}

 

 

문제6 유사. 자세한 설명 생략.

 

i = 5 ,

j = 5, j>=1 true. j>i false, 출력.

j = 4, j>=1 true. j>i false, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

i = 4 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i false, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

i = 3 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i true, 출력.

j = 3, j>=1 true. j>i false, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

i = 2 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i true, 출력.

j = 3, j>=1 true. j>i true, 출력.

j = 2, j>=1 true. j>i false, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

i = 1 ,

j = 5, j>=1 true. j>i true, 출력.  

j = 4, j>=1 true. j>i true, 출력.

j = 3, j>=1 true. j>i true, 출력.

j = 2, j>=1 true. j>i true, 출력.

j = 1, j>=1 true. j>i false, 출력.

 

'JAVA' 카테고리의 다른 글

[JAVA25] sql  (0) 2020.04.01
[JAVA24] JAVA package 간단한 설명  (0) 2020.03.31
[JAVA23] Hashtable  (0) 2020.03.26
[JAVA22] Vector  (0) 2020.03.26
[JAVA13_(1)] string의 method  (0) 2020.03.25
Comments