전 포스트에서 제어문의 정의와 조건문을 알아봤는데, 제어문의 정의가 궁금하면 앞 포스트를 보면 좋을 것 같다.
반복문을 다시 설명하자면
말 그대로 어떤 작업을 반복하기 위해서 사용하며, 특정 조건을 충족하면 그만두고 그전까지는 계속 반복한다는 특징이 있다.
반복문을 사용하는 이유
예를 들어 1부터 100까지 더해 출력하는 코드가 있다고 가정해보자.
public class LoopEx {
public static void main(String args[]) {
for(초기화식; 조건식;증감식) {
//실행 구문
}
while(조건식) {
//실행 구문
}
do {
//실행 구문
}while(조건식)
}
}
이렇게 다... 쓸 겁니까 정말...? 만약 101개로 바뀐다면..? 1000개로 바뀐다면?
이렇게 반복되는 작업을 효율적으로 하기 위해서 반복문을 사용한다.
반복문의 종류
- for 문
- while 문
- do - while 문
반복문의 종류는 위의 3개의 종류가 있다.
기본적인 모양은 다음과 같다. 일단 보기만 하고 나중에 이해하는 게 나을 것이다.
for(초기화식; 조건식;증감식) {
//실행 구문
}
while(조건식) {
//실행 구문
}
do {
//실행 구문
}while(조건식)
for 문
반복 횟수를 알고 있을 때 주로 사용한다.
맨 처음 가정을 가져와 보자.
1부터 100까지 100개의 숫자를 더하는 코드가 있다고 가정하면
public class LoopEx {
public static void main(String args[]) {
int loopcnt = 100 ; //반복횟수
int result = 0; // 결과 값을 보여줄 변수.
for(int i=1;i<=loopcnt;i++) {
//결과 = 이전 결과 + i로 결과 갱신하는 코드
result = result + i;
//혹은 result += i; 로 줄여서 쓸 수도 있다.
}
System.out.println(result);
}
}
이렇게 하면 만약 1부터 1000까지 더한 숫자를 구하려면 loopcnt라는 변수를 100에서 1000으로 바꾸면 되고,
50부터 100까지 더한 숫자를 구하려면 i의 값을 50으로 수정하면 바뀐다.
작동 순서는 다음과 같다.
for(int i=1;i<=loopcnt;i++) {
//1. i가 1로 선언 및 초기화 됨.
//2. i가 loopcnt보다 같거나 작은지 판단
//3. for문 안의 구문을 수행함.
//4. i에 1을 더함. 다음 i는 2로 값이 변경 됨.
// ... 반복
}
중요한 것은 for문의 i 는 지역 변수이기 때문에 for문 밖으로 나올 수 없다 ( 물에서만 살 수 있는 물고기가 물 밖으로 못 나오는 것과 같은 원리. 폐어는 제외. )
알아두면 좋은 것
1 . for문에는 초기화를 두 개 이상 쓸 수 있다. 물론 증감식도 초기화한 개수만큼 쓸 수 있다.
for(int i=1,j=100; i<=100 && j>0; i++,j--) {
//실행구문
}
2 . 변수의 선언이 for문 밖에서 이뤄질 수 있다.
int i=1;
for(;i<=100;i++) {
}
System.out.println(i); // 1
작동은 기존의 for문과 똑같이 된다.
장점은 위의 for문에 i는 for문 밖에서 이뤄졌기 때문에 1을 출력할 수 있다.
3 . for문의 초기화 식에서 float를 사용하지 말아야 한다.
단적으로 예를 들면, float는 0.1을 정확하게 표현할 수 없고, 0.1보다 아주 조금 크다.
그래서 결과 값이 정확하지 않을 확률이 크다.
4 . for문 안에 for문을 쓸 수 있다.
for문이 중첩되면 어떤 일이 벌어질까??
package test;
public class LoopEx {
public static void main(String args[]) {
for(int i=0;i<5;i++) {
System.out.println("i에요!");
for(int j=0;j<2;j++) {
System.out.println(" j에요!");
}
}
}
}
이와 같이 i가 1번 돌 때 j는 2번씩 돈다.
큰 톱니바퀴( i로 가정 )가 한번 돌 때, 작은 톱니바퀴(j로 가정)는 여러 번 돌게 된다고 생각하면 된다.
while 문
조건식이 true일 때 계속해서 반복한다. 특정 조건하에서만 실행될 때 좋다.
int loop = 1; //반복 횟수
int sum = 0 ; // 더할 수
while(sum < 100) { // 1번
sum += loop; // 2번
loop++; // 3번
}
System.out.println("돌아간 횟수 : " + loop);
System.out.println("총 합 : " + sum);
위의 반복문은 총합이 100을 넘어가면 멈추는 코드다.
이처럼 for문과 다르게 횟수가 아니라 특정 조건을 충족할 때까지 도는 게 while문이다.
순서는 1->2->3 처럼 조건을 확인하고 , 실행 구문을 실행하고 다시 반복한다.
int loop = 1; //반복 횟수
int sum = 0 ; // 더할 수
while(true) { // 1번
if(sum > 100) break;
sum += loop;
loop++;
}
System.out.println("돌아간 횟수 : " + loop);
System.out.println("총 합 : " + sum);
위처럼 while문의 조건안에는 true로 만들 수 있지만, break 키워드가 없으면 무한 반복하기 때문에, 위처럼 사용하려면 break 구문이 필요하다.
do-while 문
while문과 다른점은 do 문을 무조건 한번 실행한 다음 while문의 조건 검사를 한다는 점이다.
int loop = 1; //반복 횟수
int sum = 0 ; // 더할 수
do{
sum += loop;
loop++;
}
while(sum < 100);
System.out.println("돌아간 횟수 : " + loop);
System.out.println("총 합 : " + sum);
반복문 안에서의 키워드
break
break이 실행되면 반복문을 멈춰버림.
continue
continue가 실행되면 현재 반복문을 뛰어넘어감.
'Java' 카테고리의 다른 글
Java - java.lang 패키지 (0) | 2022.02.28 |
---|---|
Java - 예외 및 예외 처리 ( Exception ) (0) | 2022.02.28 |
Java 제어문 - 조건문 ( if / switch 문 ) (0) | 2022.02.11 |
JVM의 개념 - 자바 동작 과정 아주 기초! (0) | 2022.02.03 |
프로그래밍 언어 & 자바 ( Java )의 탄생 및 소개 (0) | 2022.02.03 |