반복문
- while문
- do-while문
- break
- continue
- for문
- 중첩 반복문
🔘 while문
while문은 조건에 따라 코드를 반복해서 실행할 때 사용한다.
형식
while (조건식) {
// 코드
}
- 조건식이 참이면 코드 블럭을 실행하고, 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사한다.
- 조건식이 거짓이면 while문을 벗어난다. (거짓일 때까지 무한반복)
예제 - while문을 사용하여 1을 한 번씩 더해서 총 3번 더하는 프로그램을 작성한다.
While1_2
package loop;
public class While1_2 {
public static void main(String[] args) {
int count = 0;
while (count < 3) {
count++;
System.out.println("현재 숫자는: " + count);
}
}
}
실행 결과
현재 숫자는: 1
현재 숫자는: 2
현재 숫자는: 3
- while (count < 3) 에서 조건식을 확인한다. 현재 count의 값이 0이므로 조건식이 참이다.
- 따라서 다음과 같이 코드 블럭을 반복 실행한다.
- 코드 블럭에서 count++; 으로 인해 count값이 1이 된다. 출력 코드로 인해 현재 숫자는 1이라고 출력한다..
- 다시 while (count < 3) 에서 조건식을 확인하고 현재 count의 값이 1이므로 조건식이 참이다.
- 코드 블럭에서 count++;으로 인해 count값이 2가 된다. 출력 코드로 인해 현재 숫자는 2이라고 출력한다.
- 다시 while (count < 3) 에서 조건식을 확인하고 현재 count의 값이 2이므로 조건식이 참이다.
- 코드 블럭에서 count++;으로 인해 count값이 3이 된다. 출력 코드로 인해 현재 숫자는 3이라고 출력한다.
- 다시 while(count < 3)에서 조건식을 확인하는데 현재 count의 값이 3이므로 조건식이 거짓이 된다.
- 따라서 while문을 종료 즉, 빠져나간다.
🔘 do-while문
do-while문은 while문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다.
형식
do {
// 코드
} while (조건식);
- do-while문은 조건식에 관계 없이 최초 한번은 코드 블럭을 실행한다.
- 조건식이 while문과 다르게 뒤에 있는 걸 확인할 수 있다.
DoWhile2
package loop;
public class DoWhile2 {
public static void main(String[] args) {
int i = 10;
do {
System.out.println("현재 숫자는: " + i);
i++;
} while (i < 3);
}
}
실행 결과
현재 숫자는: 10
- 단순 while문이었으면, 조건식 i < 3 이 거짓이기 때문에 조건에 맞지 않아 코드 블럭을 실행하지 않고 빠져나온다.
- 그러나 do-while문은 조건식이 참이든 거짓이든 최초 한번은 코드 블럭을 실행한다.
- 따라서 실행 결과를 보면 '현재 숫자는: 10'이라고 출력된 것이다.
- 코드 블럭이 한 번 수행된 후에 조건식을 확인하니 거짓이므로 do-while문을 빠져나온다.
do-while문은 최초 한번은 코드 블럭을 꼭 실행해야 하는 경우에 사용하면 된다.
🔘 break
break는 반복문에서 사용할 수 있는 키워드로, 반복문을 즉시 종료하고 나간다.
형식
while(조건식) {
코드1;
break; //즉시 while문 종료로 이동한다.
코드2;
}
//while문 종료
- 조건식을 확인하고 참이면 코드1을 수행한다.
- 그 다음 코드 2를 수행하기 전에 break를 만나서 while문이 즉시 종료된다.
Break1
package loop;
public class Break1 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (true) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i= " + i + " sum=" + sum);
break;
}
i++;
}
}
}
실행 결과
합이 10보다 크면 종료: i= 5 sum=15
- while문의 조건식을 보면 true라고 되어 있는데, 이는 무한 반복한다는 말이다.
- while문 내의 if문에서 sum이 10보다 크면 break를 만나게 되므로 while문을 빠져나올 수 있다.
🔘 continue
continue도 반복문에서 사용할 수 있는 키워드로, 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는 데 사용된다.
형식
while(조건식) {
코드1;
continue; //즉시 조건식으로 이동한다.
코드2;
}
- 조건식을 확인하고 참이면 코드 1을 수행한다.
- 그 다음 코드 2를 수행하기 전에 continue를 만나서 코드 2를 실행하지 않고 다시 조건식으로 이동한다.
Continue1
package loop;
public class Continue1 {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
if (i == 3) {
i++;
continue;
}
System.out.println(i);
i++;
}
}
}
실행 결과
1
2
4
5
- i == 3인 경우 i를 하나 증가하고 continue를 실행한다.
- continue를 만났으므로 if문을 포함하여 아래에 있는 출력 코드와 i를 증가하는 코드까지 무시한 다음 while문의 조건식으로 다시 돌아온다.
- 따라서 실행 결과에서 3이 제외된 것을 볼 수 있다.
🔘 for문
while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사용한다.
형식
for (1.초기식; 2.조건식; 4.증감식) {
// 3.코드
}
- 초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사용된다.
- 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
- 코드를 실행한다.
- 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한다.
- 다시 2. 조건식 부터 시작한다. (무한 반복)
사용하는 방법은 아래와 같다. 1부터 10까지 for문을 사용하여 출력해본다.
For1
package loop;
public class For1 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
- 초기식이 실행된다. int i = 1
- 조건식을 검증한다. i <= 10
- 조건식이 참이면 코드를 실행한다. System.out.println(i);
- 코드가 종료되면 증감식을 실행한다. i++
- 다시 2. 조건식을 검증한다. (무한 반복) 이후 i <= 10 조건이 거짓이 되면 for문을 빠져나간다.
🔘 중첩 반복문
반복문은 내부에 또 반복문을 만들 수 있다. for , while 모두 가능하다.
Nested1
package loop;
public class Nested1 {
public static void main(String[] args) {
for(int i = 0; i < 2; i++) {
System.out.println("외부 for 시작 i:" + 1);
for(int j = 0; j < 3; j++) {
System.out.println("-> 내부 for " + i + "-" + j);
}
System.out.println("외부 for 종료 i:" + i);
System.out.println();
}
}
}
실행 결과
외부 for 시작 i:0
-> 내부 for 0-0
-> 내부 for 0-1
-> 내부 for 0-2
외부 for 종료 i:0
외부 for 시작 i:1
-> 내부 for 1-0
-> 내부 for 1-1
-> 내부 for 1-2
외부 for 종료 i:1
- 외부 for는 2번, 내부 for는 3번 실행된다.
- 그런데 외부 for 1번당 내부 for가 3번 실행되기 때문에 외부(2) * 내부(3) 해서 총 6번의 내부 for 코드가 수행된다.
예제 - 중첩 for문을 사용해서 구구단을 완성해보자.
NestedEx1
package loop.ex;
public class NestedEx1 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.println(i + " * " + j + " = " + i * j);
}
}
}
}
실행 결과
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
...
9 * 8 = 72
9 * 9 = 81
'자바 > 자바 입문' 카테고리의 다른 글
[자바 기초] 05. 스코프(Scope), 형변환(Casting) (0) | 2024.03.26 |
---|---|
[자바 기초] 03. 조건문(if/else if/switch/삼항 연산) (0) | 2024.03.21 |
[자바 기초] 02. 연산자(Operator) (0) | 2024.03.19 |
[자바 기초] 01. 변수(Variable) (3) | 2024.03.18 |