for 반복문
- 변수의 값을 이용하여 반복 실행하는 명령문
- 일정 횟수에 대한 반복을 구현할 때 효율적으로 사용되는 반복문.
- 즉, 반복문의 횟수를 알고 있는 경우에 자주 사용됨
형식)
for(초기식; 조건식; 증감식) {
반복 실행문;
}
[for 반복문 실행 순서]
1. 초기식 : 처음에 한번만 실행됨(변수 선언)
2. 조건식 : 조건이 참이면 반복, 거짓이면 탈출(exit)
3. 실행문 : 조건이 참일 때 반복 대상인 반복 실행문이 실행됨.
4. 증감식 : 변수를 대상으로 증가(++) 또는 감소(--)
다중 for 반복문
- 반복문 안에 또 다른 반복문을 포함하는 문장
- 반복문이 중첩되어 사용되는 경우.
- 외부 반복문과 내부 반복문 간의 변수의 값 변화에 유의해야 함.
형식)
for(초기식1; 조건식1; 증감식1) {
반복 실행문1;
for(초기식2; 조건식2; 증감식2) {
반복 실행문2;
}
}
예제1)
for 반복문을 이용하여 1 ~ 10까지 출력해 보자.
public static void main(String[] args) {
for(int su=1; su<=10; su++) {
System.out.println("su >>> " + su);
}
}
예제2)
아래와 같이 별을 찍어보자
public static void main(String[] args) {
for(int i=1; i<=4; i++) { // 행
for(int j=1; j<6; j++) { //열
System.out.print("*");
}
System.out.println();
}
System.out.println();
//올라가는 별 찍기
for(int i=1; i<6; i++) { // 행
for(int j=1; j<=i; j++) { //열
System.out.print("*");
}
System.out.println();
}
System.out.println();
//내려가는 별 찍기
for(int i=5; i>=1; i--) { //행
for(int j=1; j<=i; j++) { //열
System.out.print("*");
}
System.out.println();
}
}
*****
*****
*****
*****
바깥에 있는 for문이 행,
안쪽에 있는 for문이 열 이라고 생각하면 된다
먼저 바깥에 있는 for문의 조건문이 2개 인 것을 볼 수 있다 (1, 2)
바깥 for문의 첫번째 반복 실행문인 안쪽 for문(1)을 보면,
j 값이 6을 초과하기 전까지
print("*")을 수행하고, j이 1씩 증가됨으로써 총 5번 수행하고 for문을 탈출.
==> ***** (별이 한줄에 5개 찍힘)
다음으로 두번째 반복 실행문인 줄바꿈(System.out.println();)(2)을 통해 열이 바뀌게 된다.
그리고 다음으로 i값이 1 증가하는 것이다.
이 동작을 i 값이 4를 초과하기 전까지 계속 반복. (==>즉, '*****'\n 을 4번 반복)
위와 마찬가지로, 바깥 for문이 행, 안쪽 for문이 열이라고 생각하면 된다
i가 1일 때
첫번쨰 반복 실행문인 안쪽 for문(1)의 반복 실행문인 print(*)를 i(=1)보다 작거나 같을때까지 실행 후 for문 탈출
==> *
두번째 반복 실행문인 println을 만나 줄 바뀜(열 바뀜)
i++되어 i=2
다시 첫번째 반복 실행문(1) 수행
i가 2가되었기에 print(*)을 2번 반복하고 for문 탈출
두번째 반복실행문(2) 수행
.
.
이런식으로 반복하면 아래로 갈수록 별이 한개씩 증가하는 결과창이 나온다.
한개씩 줄어드는 별 출력도 위와 동일함
예제3)
다중 for문을 이용하여 구구단을 출력해보자.
public static void main(String[] args) {
// 출력 형태 ex 2*1=2, 2*2=4 ...
for(int i=2; i<=9; i++) { //구구단에서의 단
System.out.print("***"+i+"단"+"***\t");
for(int j=1; j<=9; j++) { //구구단에서의 수
System.out.printf("%d * %d = %2d\t",i, j, (i*j));
}
System.out.println();
}
System.out.println();
System.out.println();
//출력 형태 ex. 2*1=2, 3*1=3 ...
for(int k=2; k<10; k++) {
System.out.print("*** "+k+"단 ***\t");
}
System.out.println();
for(int n=1; n<=9; n++) { //구구단에서의 수
for(int m=2; m<=9; m++) { //구구단에서의 단
System.out.printf("%d * %d = %2d\t",m, n, (m*n));
}
System.out.println();
}
}
'Back-End > Java' 카테고리의 다른 글
[Java] 배열(array) (0) | 2021.08.11 |
---|---|
[Java] 기타보조제어문(continue, break) (0) | 2021.08.11 |
[Java] 반복문 while, do while (0) | 2021.08.08 |
[Java] 조건문 switch~case문 (0) | 2021.08.08 |
[Java] 조건문 if-else문, if-else if문 (0) | 2021.08.08 |
댓글