본문 바로가기

Java/실습

[Java] 별 찍기

이번 시간에는

 

*

**

***

****

*****

 

이런식으로 점층적으로 커지는

 

별 탑을 콘솔에 출력해보도록 하겠습니다.

 

public class RMain2 {

public static void main(String[] args) {

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

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

System.out.print("*");}

System.out.println();}

}

}

 

제가짠 코드입니다.

 

i가 줄 j가 별의 갯수라고 생각하면

 

첫번 째 줄에는 별이 한개

 

두번쨰 줄에는 별이 2개

 

세번째 줄에는 별이 3개이기 때문에

 

줄의 순서만큼 별의 숫자를 출력하면됩니다.

 

즉 줄의 순서가 i이기 떄문에

 

j < i 일때까지 별을 출력시키면 되겠네요.

 

이때는 줄의 순서이기 떄문에 i를

 

1부터 시작하도록 합니다.

 

for (int i = 1; i < 6; i++) 

 

별 탑 출력

 

잘 출력되는 모습이네요.

 

반대로도 출력 가능합니다.

 

별의 개수가 5개부터 시작하면 되겠네요.

 

public static void main(String[] args) {

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

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

System.out.print("*");

}

System.out.println();

}

}

}

 

줄이 바뀌면 별의 개수가 하나

 

줄어들도록 하면 됩니다.

 

거꾸로 된 별 탑

 

 

 

 

다음은

 

*

 *

  *

   *

    *

 

이런 탑을 출력하려면

 

어떻게 해야할까요?

 

public class RMain2 {

public static void main(String[] args) {

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

 

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

 

System.out.print(" ");

}

System.out.print("*");

System.out.println();

}

}

}

 

별의 개수는 1개로 고정이라 

 

줄의 개수 만큼표시하면 되고

 

기존에 별을 출력하던 곳에 공백을

 

줄의 순서 만큼 넣어주면 됩니다.

 

 

공백 별 탑 출력

 

 

마지막으로 섞어서 탑을 쌓아보면 어떨까요?

 

ㅋㅋㅋㅋㅋ

ㅎㅎㅎㅎ

ㅋㅋㅋ

ㅎㅎ

 

이런식으로 쌓아보겠습니다.

 

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

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

if(i % 2== 0) {

System.out.print("ㅋ");

} else

System.out.print("ㅎ");

}

System.out.println();

}

 

위 예제처럼 거꾸로 쌓되,

 

홀수 줄에는 'ㅋ'을

 

짝수 줄에는 'ㅎ'을

 

출력하면 됩니다.

 

이 부분은 i로 처리하면 되겠네요.

 

 

믹스 탑

 

이상 이중 반복문 실습의 꽃,

 

별 탑 출력하기였습니다..