중첩
for문을 이용하여 다음과 같은 결과가 나오도록 별찍기를 수행하시오.
*
* * *
* * * * *
* * * * * * *
* * * * * * *
* * * * *
* * *
*
public class Si {
public static void main(String args[]) {
for ( int i = 1; i <= 4; i++ ) {
for ( int j = 1; j <= (i*2)-1; j++ ) {
System.out.print("* ");
}
System.out.println();
}
for (int i = 0; i <= 3; i++ ) {
for (int j = 7-(i*2); j >= 1; j--) {
System.out.print("* ");
}
System.out.println();
}
}
}
위쪽 중첩 for문은 아래의 부분을,
*
* * *
* * * * *
* * * * * * *
아래쪽 중첩 for문은 아래의 부분을 출력하도록 하였다.
* * * * * * *
* * * * *
* * *
*
for ( int i = 1; i <= 4; i++ ) {
for ( int j = 1; j <= (i*2)-1; j++ ) {
System.out.print("* ");
}
System.out.println();
}
4줄이 출력되도록 i가 1부터 4까지 for문이 반복되도록 설정한다.
출력될 별의 개수를 1부터 2씩 증가하도록 (i*2)-1로 별이 1개 3개 5개 7개로 출력되도록 한다.
한 줄 출력을 끝낼 때마다 줄바꿈을 한다.
for (int i = 0; i <= 3; i++ ) {
for (int j = 7-(i*2); j >= 1; j--) {
System.out.print("* ");
}
System.out.println();
}
4줄이 출력도도록 i가 0부터 3까지 for문이 반복되도록 설정한다.
여기서 i의 초깃값을 0으로 준 이유는 아래에서 나올 것이다.
출력될 별의 갯수인 j는 7부터 for문이 새로 반복될 때마다 2씩 감소 되어야 한다. 따라서 처음에는 7-0을 해야 j의 값, 즉 출력될 별의 갯수가 7개가 되므로 곱해져서 0이 나오도록 i의 초깃값을 0으로 설정한 것이다.
이렇게 별이 7개 5개 3개 1개로 출력된다.
한 줄 출력을 끝낼 때마다 줄바꿈을 한다.