[JAVA] 자바 반복문 알아보기

    728x90

    안녕하세요

    로로봉입니다 : )

    오늘은 JAVA의 반복문에 대해 알아보도록 하겠습니다.

    반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용되며, 반복문의 종류는 for문 while문, do-while문이 있습니다.

    여기서 반복문 중에 do-while문의 다른점은 실행 후 조건을 비교하기 때문에 최소 한번은 꼭 실행된다는 것입니다.

    1) for문

    for문의 기본 구조는 아래와 같습니다.

    for (초기화;조건식;증감식) {
      // 조건식이 true일 때 수행
    }

     for문은 초기화 후 조건식으로 비교하고 true일 경우 내부의 수행할 코드가 실행됩니다. 실행 후에는 증감식을 통해 조건에 따른 변수를 증가하거나 감소시킵니다. 그 이후는 조건식을 다시 비교하는 반복이라고 보면 됩니다.

    public static void main(String[] args) {
      for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
          System.out.println(""+i+j);
    }

    for문을 활용하여 11부터 33까지 출력을 합니다. char형("")에 int형을 더하면 char형으로 출력되는 것을 볼 수 있습니다.

    위의 코드를 실행한 결과는 아래와 같습니다.

    11
    12
    13
    21
    22
    23
    31
    32
    33

     

     


    2) while문

    while문은 for문과 다르게 조건식과 수행할 {}블럭으로만 구성되어 있습니다. while문의 기본 구조는 아래와 같습니다.

    while (조건식) {
      // 조건식이 true일 경우 수행
    }

     while문의 경우 실수로 while문 안에서 조건식의 변수를 초기화하는 경우 무한 반복에 빠질 수 있으므로 주의해야 합니다.

    그래서 카운터를 필요로하는 반복문인 경우에는 while문이 아닌 for문을 권장합니다.

    while문을 이용하여 1부터 10까지 출력해보도록 하겠습니다.

    public static void main(String[] args) {
      int i=1;
      while(i<11) {
        System.out.println(i++);
      }
    }

    위의 코드를 실행한 결과는 아래와 같습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    3) do-while문

     do-while문의 기본구조는 while문과 같으나 블럭부분이 먼저 실행되고 조건식을 비교하게 됩니다.

    기본 구조는 아래와 같습니다.

    do {
      // 조건식이 ture일 경우 수행
    } while (조건식);

    아래와 같이 do-while문를 사용해보겠습니다. 입력을 받아 그대로 출력하고 'x'를 입력하는 경우 do-while문이 종료되는 것을 볼 수 있습니다.

    public static void main(String[] args) throws IOException {
      int input=0;
    		
      System.out.println("문장을 입력하세요.");
      System.out.println("입력을 마치려면 x를 입력하세요.");
      
      do {			
    	input = System.in.read();
        System.out.print((char)input);			
      } while(input != -1 && input != 'x');
    }

    위의 코드를 실행한 결과는 아래와 같습니다.

    문장을 입력하세요.
    입력을 마치려면 x를 입력하세요.
    Test Message
    Test Message
    x
    x

     

     


    4) break문

     break문은 주로 if문과 같이 사용되어 특정 조건을 만족하면 반복문을 벗어나도록 도와줍니다.

    public static void main(String[] args) {
      int sum = 0;
      int i = 1;
      
      while(true) {
        if(sum > 10)
          break;
          
        ++i;
        sum += i;
      }
      
      System.out.println("i=" + i);
      System.out.println("sum=" + sum);
    }

    위의 코드를 실행한 결과는 아래와 같습니다.

    i=5
    sum=14

    sum이 10보다 커지는 경우 while문이 멈추며 아래 출력 함수가 실행되고 종료되게 됩니다.


    5) continue문

    continue문은 반복문 내에서만 사용될 수 있으며, 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어가게 됩니다. for문의 경우 증감식으로 이동하며, while문과 do-while문은 조건식으로 이동합니다.

     continue문은 반복문 내에서 다음 반복을 계속 수행한다는 점이 break문과 다릅니다. 주로 if문과 같이 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장들을 수행하지 않고 다음 반복으로 건너띄도록 처리할 수 있습니다.

    public static void main(String[] args) {
      for(int i=0;i<=10;i++) {
        if(i%3==0)
          continue;
        System.out.println(i);
      }
    }

    위의 코드를 실행한 결과는 아래와 같습니다.

    1
    2
    4
    5
    7
    8
    10

    3의 배수인 경우 건너띄도록 처리가 됩니다.



    6) 반복문에 이름 붙이기

    여러 반복문이 중첩되어 있을 때 반복문 앞에 이름을 붙이고 break문과 continue문에 이름으로 해당 반복문을 지정하여 break하거나 continue할 수 있습니다.

    public static void main(String[] args) {
      Loop1 : for(int i=2;i<=9;i++) {
                for(int j=1;j<=9;j++) {
                  if(j==5)
                    break Loop1;
                  System.out.println(i+"*"+j+"="+i*j);
                }
      }
    }

    위의 코드를 실행한 결과는 아래와 같습니다.

    2*1=2
    2*2=4
    2*3=6
    2*4=8

    Loop1을 j가 5일경우 벗어나기 때문에 전체 루프가 중단되는 것을 볼 수 있습니다.

    break Loop1을 break로 변경하고 실행하면 아래와 같은 결과를 얻을 수 있습니다.

    2*1=2
    2*2=4
    2*3=6
    2*4=8
    
    3*1=3
    3*2=6
    3*3=9
    3*4=12
    
    4*1=4
    4*2=8
    4*3=12
    4*4=16
    
    5*1=5
    5*2=10
    5*3=15
    5*4=20
    
    6*1=6
    6*2=12
    6*3=18
    6*4=24
    
    7*1=7
    7*2=14
    7*3=21
    7*4=28
    
    8*1=8
    8*2=16
    8*3=24
    8*4=32
    
    9*1=9
    9*2=18
    9*3=27
    9*4=36

    j로 돌고있는 반복문만 break되어 j가 5일 경우 멈추고 다음 i 반복문이 실행되는 것을 볼 수 있습니다.

    이번에는 break로 변경했던 부분에 countinue Loop1로 변경하고 실행해보면 아래와 같은 결과를 얻을 수 있습니다.

    2*1=2
    2*2=4
    2*3=6
    2*4=8
    3*1=3
    3*2=6
    3*3=9
    3*4=12
    4*1=4
    4*2=8
    4*3=12
    4*4=16
    5*1=5
    5*2=10
    5*3=15
    5*4=20
    6*1=6
    6*2=12
    6*3=18
    6*4=24
    7*1=7
    7*2=14
    7*3=21
    7*4=28
    8*1=8
    8*2=16
    8*3=24
    8*4=32
    9*1=9
    9*2=18
    9*3=27
    9*4=36

    j가 5일 경우 Loop1 반복문으로 continue하는 것이기 때문에 다음 구구단으로 넘어가버리는 것을 볼 수 있습니다.

    Loop1을 빼고 continue만으로 변경 후 실행하면 아래와 같은 결과를 얻을 수 있습니다.


    2*1=2
    2*2=4
    2*3=6
    2*4=8
    2*6=12
    2*7=14
    2*8=16
    2*9=18
    
    3*1=3
    3*2=6
    3*3=9
    3*4=12
    3*6=18
    3*7=21
    3*8=24
    3*9=27
    
    4*1=4
    4*2=8
    4*3=12
    4*4=16
    4*6=24
    4*7=28
    4*8=32
    4*9=36
    
    5*1=5
    5*2=10
    5*3=15
    5*4=20
    5*6=30
    5*7=35
    5*8=40
    5*9=45
    
    6*1=6
    6*2=12
    6*3=18
    6*4=24
    6*6=36
    6*7=42
    6*8=48
    6*9=54
    
    7*1=7
    7*2=14
    7*3=21
    7*4=28
    7*6=42
    7*7=49
    7*8=56
    7*9=63
    
    8*1=8
    8*2=16
    8*3=24
    8*4=32
    8*6=48
    8*7=56
    8*8=64
    8*9=72
    
    9*1=9
    9*2=18
    9*3=27
    9*4=36
    9*6=54
    9*7=63
    9*8=72
    9*9=81
    

    이번에는 각 구구단에 5 부분만 없이 전체 다 나오는 것을 볼 수 있습니다. j가 5일 경우 수행하지 않고 다음 반복으로 넘어가기 때문입니다.

    다음 자바 공부는 배열에 대해 알아보는 시간을 갖도록 하겠습니다.

     

    좋아요 ♥ + 구독 부탁드립니다. : )

    728x90
    반응형

    '개발 정보 > JAVA' 카테고리의 다른 글

    [JAVA] 자바 다차원 배열  (0) 2021.07.08
    [JAVA] 자바 배열에 대해  (0) 2021.06.21
    [JAVA] 자바 조건문 알아보기  (0) 2021.06.07
    [JAVA] 자바 연산자 알아보기 2  (0) 2021.06.02
    [JAVA] 자바 연산자 알아보기 1  (0) 2021.06.01

    댓글