Java 기초 문법 정리(4강)

4장 제어문

if문, if-else 문
  • 조건식의 결과에 따라 수행문이 실행되는 조건문

    if (조건식) {
        수행문;
    }
      
    if (조건식) {
        수행문 1;
    } else {
        수행문 2;
    }
    
if-else if-else 문
  • 하나의 조건에 대한 여러 경우에 대해 수행문이 각각 다른 경우

    if (조건식) {
        수행문 1;
    } else if (조건식) {
        수행문 2;
    } else {
        수행문 3;
    }
    
조건문과 조건 연산자
  • if-else 문은 조건 연산자로 구현할 수 있음

    if (a > b)
        max = a;
    else
        max = b;
      
      
    max = (a > b) ? a : b;
    
switch-case문
  • 조건이 정수, 문자열 값으로 그 값에 따라 수행 결과가 달라지는 경우 if-else if-else와 같은 의미로 수행

  • break가 없으면 case에 해당되지 않아도 수행될 수 있으므로 주의해야 함

    if (rank == 1) {
        medalColor = 'G';
    } else if (rank == 2) {
        medalColor = 'S';
    } else if (rank == 3) {
        medalColor = 'B';
    } else {
        medalColor = 'A';
    }
      
    switch(rank) {
        case 1:medalColor = 'G':
            break;
        case 2:medalColor = 'S':
            break;
        case 3:medalColor = 'B':
            break;
        default:medalColor = 'A':
    }
    
  • 조건에 문자열 사용하기(자바 7부터 가능)

    switch (medal) {
        case "Gold":
            System.out.println("금메달");
        case "Silver":
            System.out.println("은메달");
        case "Bronze":
            System.out.println("동메달");
        default:
            System.out.println("메달이 없습니다.");
    }
    
연습문제
  • 각 월에 따른 한 달 날짜 수를 day 변수 값으로 출력(2월은 28일로)

    import java.util.Scanner;
      
    public class SWitchExample {
          
        public static void main(String[] args) {
              
            Scanner scan = new Scanner(System.in);
            int month = Scanner.nextInt();
            int day;
              
            switch(month) {
                case 1: case 3: cae 5: case 7: case 8: case 10: case 12:
                    day = 31;
                    break;
                case 2:
                    day = 28;
                    break;
                case 4: case 6: case 9: case 11:
                    day = 31;
                    break;
                default:
                    System.out.println("Error");
                    day = 0;        
            }
            System.out.println(month + "날은 " + day +"일입니다.")
        }
    }
    
for문
  • 반복문 중 가장 많이 사용됨

  • 일정 횟수에 기반한 반복을 구현할 때 효율적

    for (초기화식; 조건식; 증감식) {
        수행문;
    }
    
각 반복문의 쓰임
  • while
    • 수행: 조건이 참인 동안 반복 수행, 조건이 맞지 않으면 수행되는 부분이 없음
    • 쓰임: 조건식의 결과나 변수가 true, false 값인 경우 주로 사용
  • do-while
    • 수행: 조건이 참인 동안 반복 수행, 수행문을 먼저 수행하고 조건 체크
    • 쓰임: 조건식의 결과나 변수가 true, false 값인 경우 주로 사용
  • for
    • 수행: 초기화, 조건체크, 증감 순으로 수행
    • 쓰임: 특정 수의 범위, 횟수와 관련하여 반복되는 경우 주료 사용. 배열과 함께 많이 사용
중첩 반복문
  • 반복문이 중첩되어 구현되어 있는 경우
  • 반복문 내부에 또 다른 반복문이 있음
  • 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의
  • 반복문은 수행 속도에 영향을 많이 미치며 중첩되어 있을수록 속도가 느려짐
break문
  • 감싸고 있는 블록의 제어를 빠져나오는 기능
  • 반복문, 조건문, switch-case 등과 같이 쓰이며 현재 수행하고 있던 블록에서 수행을 중지하고 외부로 제어가 이동
  • 반복문과 같이 사용하면 특정 조건일 때 반복을 중지하는 기능을 구현할 수 있음
    public class BreakExample {
        
      public static void main(String[] args) {
            
          int num;
        int sum = 0;
            for (int num=1;; num++) {
                sum += num;
                if (sum >= 100) break;
            }
            System.out.println(num); 
            System.out.println(sum);
        }
      }
    
continue 문
  • 반복의 수행 중 조건문과 조건이 맞는 경우 이후 블록 내부의 다른 수행문을 수행하지 않음

    public class ContinueExample {
          
        public static void main(String[] args) {
              
            int num;
            for (num=1 ; num<=100; num++) {
                if (num%3 != 0) continue;
                System.out.println(num);            
            }
        }
    }
    
반복문
  • 동일한 수행문을 조건에 맞는 동안 수행하도록 하는 기능
  • 달리는 자동차 / 일정 횟수만큼 돌아가는 나사 / 특정 온도까지 가동되는 에어컨
while 문
  • 조건이 참인 동안 반복해서 수행문 수행

    while (조건식) {
        수행문 1;
        ...
    }
    
do-while 문
  • 먼저 수행문을 수행하고 조건 체크

  • 한 번 이상 수행문이 수행되어야 하는 경우 사용

    do {
        수행문 1;
    } while (조건식) {
        수행문 2;
    }
    
while문과 do-while문 비교
  • 입력 받는 정수를 모두 더해주고 입력된 정수가 0이면 반복문 빠져 나오기

    // do-while
      
    import java.util.Scanner;
      
    public class Example {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int input;
                  
            do {
                input = scanner.nextInt();
                sum += input;
            } while (input != 0);
                  
            System.out.println(sum);        
        }
    }
    
    // while
      
    import java.util.Scanner;
      
    public class Example2 {
        public static void main(String[] args) {
            int input;
            int sum = 0;
            Scanner scanner = new Scanner(System.in);
            input = scanner.nextInt();
              
            while(input != 0) {
                sum += input;
                input = scanner.nextInt();
            }
            System.out.println(sum);
        }
    }