일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Eureka
- methodArea
- 추상클래스
- 생성자
- concreteclass
- class
- string
- garbagecollection
- object
- super
- arguments
- 콘크리트클래스
- fuction
- MSA
- Hashtable
- 객체형변환
- Polymorphism
- overload
- value
- abstractclass
- override
- run()
- hashCode
- ALTER
- Vector
- hamobee
- eclipse
- reference
- start()
- constantnumber
- Today
- Total
뇌운동일지
[JAVA04_(1)] for문의 ★ 출력 예제 7가지 본문
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 |