본문 바로가기
Programming/Java

[Java] for문 연습 별 찍기

by hongchii 2021. 2. 19.
728x90
반응형

 

1. 별찍기-1

 

for(int i=1; i<=5; i++){
   System.out.println("*****");
 } 

i는 1로 초기화가 되어있다.

조건식 i<=5 에 i의 값을 대입하면  1<=5 이 되고, 이는 참(true)이기 때문에 다음 문장 ***** 이 출력된다.

그리고 i는  i++ 만나서 2가 된다.

 

똑같이 i의 값을 조건식에 대입.  2<=5..  --> 참 --> ***** 출력..  --> i==3...이 되고

..

..

이렇게 i가 5가 될 때까지 반복하고, i가 6이 되었을때  i <= 5  조건식이 false가 되면서 반복문을 빠져나오게된다.

결과

*****

*****

*****

*****

*****

 

조건식이 참이었던 5까지 다섯번 반복돼서 찍혔음을 알수가 있다.

 


2. 별찍기-2

 

위의 별찍기는 가장 단순하고 기본적인 별찍기라면 이제 중첩 for문을 사용해서 별찍기를 해야한다.

for(int i=1; i <= 5; i++){ // 1-for문
    for(int j=1; j <= i; j++){ // 2-for문
       System.out.print("*");
    }
    System.out.println();
}    

i는 1로 초기화 되었고, i <=5 다음 조건식을 만족하기 때문에 

다음 2-for문으로 진입한다.

여기서 새로운 변수 j가 나오고, j는 마찬가지로 1로 초기화. 

i=1 이기 때문에 j <= i 조건식이 (1<=1) 참이되어 * 이 하나 출력된다.

그리고 j는 j++ 을 만나서 2가 된다. 

j가 2가 되면서 2 <= 1 로 조건식이 거짓이 되어 2-for문을 빠져나오게 된다.

그럼 System.out.println(); 을 출력하고 (줄바꿈처리)

다시 1-for문으로 돌아가 i++를 만나 i==2가 된다.

 

i==2가 되어 2-for문으로 들어가고 j는 다시 1,

위와 똑같이 반복하면 **이 두개가 찍히고, 2-for문을 빠져나온다.

 

또 , 반복.. 반복.. 

 

 

결과

*

**

***

****

*****

 

 

 


3. 별찍기-3

for (int i=0; i<5; i++) { // 1-for문
  for (int j=5; i<j; j--) { // 2-for문
    System.out.print("*");
  }
  System.out.println();
}

i==0으로 2-for문으로 진입하게 되고, 2-for문의 조건식 i < j  (0 < 5) 에 만족하기때문에 *을 출력한다.

그리고 j는 j-- 를 만나 1씩 감소되며 i<j가 false가 될때까지 *을 반복 출력한다.

i의 값이 0일때 i<j가 false가 되려면 j가 0이 되어야하므로, 5,4,3,2,1 = 다섯개의 별이 출력된다.

그 후, i는 1이 되고, 똑같이 반복해서 4번의 별출력,

또 3번의 별출력

반복.. 반복 

 

아래와 같은 결과로 별을 찍을 수 있다.

결과

*****

****

***

**

*

 

 


4. 별찍기-4

for (int i = 0; i < 5; i++) { // 1-for문
	for (int j = 5; j > i; j--) { // 2-for문
		System.out.print(" ");
	}
	for (int k = 0; k < 2 * i + 1; k++) { // 3-for문
		System.out.print("*");
	}
	System.out.println();
}
		

 

피라미드형 별을 출력하기 위해서는 별 앞에 공백의 수까지도 계산을 해야한다.

처음 1-for문과 2-for문으로 공백을 출력하고 3-for문에서 별을 출력하면 된다.

3-for문에서  k < 2 * i + 1 조건식을 사용한건, 

아래 결과 화면을 보면 알겠지만 별이 1개 3개 5개 . . . 이런식으로 출력돼야 피라미드 모양이 되기 때문이다.

 

 

 

결과

        *

      ***

    *****

  *******

*********

 

 

728x90
반응형

댓글