JAVA 입문 _ 김영한의 자바 입문 강의 - Day 6[반복문1]
1. 반복문 : 특정 코드를 반복해서 실행할 때 사용
1) While문 1 [ while (조건식 ]
- 조건문을 확인한 후 참이면 코드 블럭을 반복 실행하고, 거짓이면 while문을 빠져나간다.
public class While1_1 {
public static void main(String[] args) {
int count = 0;
while ( count <27 ) {
count++;
System.out.println("현재 숫자는 : " + count );
}
}
}
public class While1_1 {
public static void main(String[] args) {
int count = 25;
while ( count <27 ) {
count++;
System.out.println("현재 숫자는 : " + count );
}
}
}
-> while ( count < 27 ) 이 참이므로 코드 블럭을 반복실행한다. 값이 점점 증가하다가 count < 27이 거짓이 되면 while문을 빠져나간다.
2) While문 2
예제) i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더하세요.
public class While2_1 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endNum = 3;
while ( i <= endNum ) { // i가 endNum보다 작을 때까지
sum = sum + i; //
System.out.println("i= " + i + " sum= " + sum);
i++; //i는 하나씩 증가한다.
}
}
}
3) do-while문 : 조건에 상관없이 무조건 한 번은 코드를 실행
public class DoWhile1_1 {
public static void main(String[] args) {
int i = 8;
do {
System.out.println("i = " + i );
i++;
} while ( i < 3 );
}
}
-> i는 8이므로 이미 조건은 거짓이다. 하지만 do문 안에 코드를 작성하면 참과 거짓에 상관없이 무조건 한 번은 실행된다.
- 최초 한 번은 코드 블럭을 꼭 실행해야 하는 경우에 사용된다.
4) break, continue문 : 반복문에서 사용할 수 있는 키워드
- break : break를 만나면 코드가 더 있어도 실행되지 않고 while문이 종료된다.
예제) 1부터 시작해서 숫자를 누적해 더하다가 합계가 10보다 처음으로 큰 값은 얼마인가요?
public class Break1 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (true) { //항상 참인 무한 반복 조건문
sum = sum + i; // i++를 실행한 후 해당 코드로 온다.
if ( sum > 10 ) { //if문이 참이될 때 코드가 실행, break문을 통해 빠져나온다.
System.out.println("합이 10보다 크면 종료 : i=" + i + " sum=" + sum);
break;
}
i++; //if문이 거짓일 때 while문을 바로 빠져나와 i++가 실행된다.
}
}
}
- continue : continue를 만나면 다음 코드가 실행되지 않고 다시 조건식으로 이동, 조건식이 참이면 while문을 실행한다.
예제) 1부터 5까지 숫자를 출력하는데, 숫자가 3일 때는 출력을 건너뛰는 프로그램을 작성하세요.
public class Continue {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
if ( i == 3 ) {
i++;
continue;//i가 3이 되면 if문이 참이 된다.그리고 continue를 만나 다시 조건식으로 돌아가 출력이 안된다.
}
System.out.println(i);
i++;
}
}
}
5) for문 : 주로 반복 횟수가 정해져 있을 때 사용
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
1부터 10까지 출력되는 for문을 작성했을 때,
1. 초기식이 실행된다. int i = 10 [ 주로 반복 횟수와 관련된 변수를 선언하고 초기화할 때 사용한다. 초기식은 한 번만 사용된다]
2. 조건식을 검증한다. i <= 10 [참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.]
3. 조건식이 참이면 코드를 실행한다. Syetem.out.println(i);
4. 코드가 종료되면 증감식을 다시 실행한다. i++ [주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가시킬 때 사용한다. ]
5. 다시 2.조건식을 검증한다. (무한 반복) 이후 i <= 10 조건이 거짓이 되면 for문을 빠져나간다.
예제1) i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더하세요.
public class For2 {
public static void main(String[] args) {
int sum = 0;
int endNum = 3;
for (int i = 1; i <=endNum; i++) {
sum = sum + i;
System.out.println("i=" + i + " sum=" + sum);
}
}
}
- for문은 초기화, 조건 검사, 반복 후 작업 등이 규칙적으로 한 줄에 모두 들어있어 코드를 이해하기 용이하다.
for ( ; ; ) {
//코드
}
- 위처럼 초기식, 조건식, 증감식은 선택으로 모두 생략해도 된다. 하지만 각 영역을 구분하는 세미콜론은 유지해야 한다.
조건이 없는 경우에는 무한 반복되는 코드가 된다.
예제2) 1부터 시작해 숫자를 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인지 구하세요.
public class For3 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
for (; ; ) { //초기식이나 조건식이 생략된 상태로, 무한 반복된다.
sum += i;
if (sum > 10) { //if문의 조건 sum > 10을 만족하면 break를 사용해 for문을 빠져나간다.
System.out.println("i = " + i + " sum = " + sum);
break;
}
i++; //실행결과 i = 5 sum = 15
}
}
}
-> 위 코드를 보면 어떤 값이 반복해서 사용되는 증가 값인지 직관적으로 확인하기가 어렵다.
public class For4 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; ;i++ ) {
sum += i;
if (sum > 10) {
System.out.println("i = " + i + " sum = " + sum);
break;
}
}
}
}
-> 이러한 형태로 코드를 수정하면 for문만 보고도 i가 증가하는 값이라는 것을 바로 알 수 있다.
- 카운터 변수가 명확하거나 반복 횟수가 정해진 경우에는 for문을 사용하는 것이 직관적이고 유지보수하기에도 좋다.