반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용되며, 반복문의 종류는
for 문과 while문, 그리고 변형인 do-while문이 존재한다.
for문과 while 문은 구조와 기능이 유사하며 서로 변환이 가능하다
일반적으로 반복횟수를 알고 있으면 for문을 , 그렇지 않으면 while문을 사용한다.
// for문의 구조와 수행순서를 알아보자.
for(초기화;조건식;증감식) {
// 조건식이 참(true)인 동안 수행될 문장들을 작성한다.
}
// 초기화 > 조건식 > 수행될 문장 < 증감식 순서로 이루어진다.
EX)
class Ex {
public static void main(String args[]) {
for(int i = 1; i <= 3; i++ {
System.out.println("Hello");
}
}
}
위의 코드를 실행하면 결과값
<
Hello
Hello
Hello
>
for문 안에 또 다른 for문을 포함시키는 것이 가능하며, 중첩 for문이라고한다.
중첩 횟수는 따로 제한이 없다.
// 일반적으로 반복문을 사용하면
for(int i = 1; i<= 5; i++ {
System.out.println("***********"); // 별을 반복하여 출력
}
// 또 다른 에시
class Ex {
public static void main(String args[]) {
for(int i = 1; i<=5; i++ {
for(int j=1; j<=i; j++ {
System.out.print("*")
}
System.out.println();
}
}
for문에 비해 while문은 구조가 간단한다. if문 처럼 조건식과 블럭 {}만으로 이루어져 있다.
다만 if문과 달리 while문은 조건식이 '참(true)인 동안',즉 조건식이 거짓이 될 때까지
블럭{} 내에 문장을 반복한다.
// while문의 조건식을 가볍게 표현하자면
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안 , 반복될 문장들을 적는다.
}
// for 문
// 초기화 , 조건식 , 증감식
for(int i = 1; i<=10, i++{
System.out.println(i);
}
// while 문
int i =1; // 초기화
while(i<=10) {
System.out.println(i);
i++;
}
// for 문과 while문은 거의 100% 호환 가능하다 그래서 서로 변환이 가능하며
// while문보다 for문이 좀 더 간결하고 알아보기 쉽다
// 만약 초기화나 증감식이 없다면 while문이 좀 더 적합하다고 판단할 수 있다.
class Ex{
public static void main(String[] args) {
int sum = 0;
int i = 0;
// i를 1씩 증가시켜 sum에 계속 더해나간다.
while(sun <=) {
System.out.printf("%d - %d%n" , i , sum);
sum += ++i;
}
}
}
do-whil문은 while문의 변형으로 기본적인 구조는 while문과 같으나 조건식과 블럭의 순서를 바궈놓은 것이다. 그래서 while문과 반대로 블럭을 먼저 수행한 후에 조건식을 평가한다.
while문은 조건식의 결과에 따라 블럭{}이 한번도 수행되지 않을 수 있지만
do-while문은 최소한 한번은 수행될 것을 보장한다.
2-1 🔎 Ex)
import java.util.*;
calss Ex {
public static void main(String[] args) {
int input = 0, answer = 0;
answer = (int)(Math.random() *100) +1;
Scanner scanner = new Scanner(System.in)
do {
System.out.print("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt();
if(intput> answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
} else if (input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
} while(intput!=answer);
System.out.println("정답입니다.");
}
}
앞서 switch문에서 break문에 대해 배웠던 것을 기억할 것이다. 반복문에서도 break문을 사용할 수 있는데 switch문에서 그랬던 것처럼 , break문은 자신이 포함된 가장 가까운 반복문을 벗어난다. 주로 if문과 함께 사용되며 특정 조건을 만족할 때 반복문을 벗어나게 된다.
// break문 예제
class Ex {
public static void main(String[] args) {
int sum = 0;
int i = 0;
while(true) {
if(sum > 100) // 만족하면 탈출
break;
++i;
sum += i ;
// end of while
}
System.out.println("i=" + i);
System.out.println("sum=" + sum);
}
}
continu문은 반복문 내에서만 사용될 수 있으며 , 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복문으로 넘어간다. for문의 경우 증감식으로 이동하며,
while 문과 do-while문의 경우 조건식으로 이동한다.
참고로 continue문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break문과는 다르다. 주로 if문과 함께 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장을 수행하지 않고 다음 반복으로 넘어가서 게속 진행하도록 한다.
4-1 Ex)
class Ex {
public static void main(String[] args) {
for(int i = 0; i <=10 i++ ) {
if (i%3==0)
continue; // 3의 배수는 제외하는 예시
System.out.println(i);
}
}
}