본문 바로가기
Backend/Java

Java 기초 문법 : 반복문(for, while)

by 코딩쥐 2024. 5. 12.

반복문은 조건을 만족하는 동안 로직을 계속 반복한다. Java에서는 while문과 for문을 반복문으로 제공하고 있다. 

 

for

조건을 만족하는 동안 블럭을 반복한다. 반복횟수를 알 때 사용하기 적합하다. for 문 안에 또 다른 for문을 포함하는 중첩 for문도 가능하다. 

  • for (초기화; 조건식; 증감식) { 조건식이 true 일 때 수행할 문장 }
    조건식이 false가 될 때까지 수행한다.
public class Test {
public static void main(String[] args) {
  for (int i = 1; i <= 3; i++) { 
  System.out.println("안녕하세요");
  }
 }
}  // i가 3이 될 때까지 "안녕하세요" 반복함

 

향상된 for문 

JDK 1.5부터 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for문의 새로운 문법 추가되었다.

  • for ( 타입 변수명 : 배열 또는 컬렉션 ) { 반복할 문장 }
public class Ex05 {
    public static void main(String[] args) {
    	int[] a2 = {1,2,3,4,5};

        for (int i=0; i<a2.length; i++){
            System.out.println(a2[i]); // 1,2,3,4,5
        }

        for (int i : a2){
            System.out.println(i); // 1,2,3,4,5
        }
    }
}

 

While

조건을 만족시키는 동안 블럭을 반복한다. 특정조건이 참일 동안 계속해서 반복하는 로직을 만들 때 사용한다. while 문의 경우 조건식의 문장이 참일 동안 반복하는 문장이기 때문에 반드시 거짓이 될 조건을 걸어놔야된다. 조건이 없을 경우 무한반복을 하게 된다.

  • while (조건식) { 조건식이 true인동안 반복되는 문장 }
public class Example1 {
    public static void main(String[] args) {
        int i=11;
        System.out.println("카운트다운을 시작합니다.");
        
        while(i--!=0) {
            System.out.println(i);
        }
        System.out.println("Game Over");
    }
}

 

do-while

 블럭을 최소한 한 번 이상 반복한다. 

  • do { 조건식이 true일때 수행될문장, 처음 한번은 무조건 시행 }
    while (조건식); 
import java.util.Scanner;

public class Test {
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 (input > answer) {
    System.out.println("더 작은 수로 다시 시도해보세요.");
    } else if (input < answer) {
    System.out.println("더 큰 수로 다시 시도해보세요.");
    }
    } while(input!=answer);

    System.out.println("정답입니다.");
    System.out.println("정답: " + answer);
 } 
}

// 1~100사이의 정수 중 답 맞추기
// do-while이 아니라 while을 사용했을 경우 "1과 100사이의 정수를 입력하세요>"라는 코드를 한번 더 작성해야 함