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개 . . . 이런식으로 출력돼야 피라미드 모양이 되기 때문이다.
결과
*
***
*****
*******
*********
'Programming > Java' 카테고리의 다른 글
[Java] 반복문 - 향상된 for문 (0) | 2021.02.21 |
---|---|
[Java] 사용자에게 값을 입력받아 별 출력하기 (0) | 2021.02.19 |
[Java] 반복문 - for (0) | 2021.02.19 |
[Java] 조건문 - switch (0) | 2021.02.19 |
[Java] for문 연습 구구단 출력하기 (세로) (0) | 2021.02.18 |
댓글