본문 바로가기
Java

[Java] 조건문: if문, switch문

by lmyourpearl 2025. 11. 2.

자바 프로그램은 main() 메소드의 시작 중괄호 { 에서 끝 중괄호 } 까지 위에서부터 아래로 실행하는 흐름을 가지고 있으며, 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것을 흐름 제어문 혹은 제어문이라고 함.

제어문의 종류에는 조건문과 반복문이 있음.


조건문은 조건식에 따라 다른 실행문을 실행하기 위해 사용되며, 조건문의 종류로는 if문, switch문이 있다.

if문은 조건식의 결과가 true, false이냐에 따라, switch문은 변수의 값에 따라 실행문이 결정 됨.

 

if문

if문은 조건식의 결과에 따라 블록 실행 여부가 결정되며, 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나, boolean타입 변수가 올 수 있는데, 조건식이 true이면 블록을 실행하고, false이면 블록을 실행하지 않음.

 

// if문

package sec01.exam01;

public class IfExample {
	public static void main(String[]args) {
    int score = 93;
    
    if(score>=90) {
     System.out.println("점수가 90보다 큽니다.");
     System.out.println("등급은 A입니다.");
   }
   
    if(score<90)
     System.out.println("점수가 90보다 작습니다.");
     System.out.println("등급은 B입니다.");
    
   }
 }
 
// 실행 결과
// 점수가 90보다 큽니다.
// 등급은 A입니다.
// 등급은 B입니다.

 

if-else 문

if문은 else 블록과 함께 사용되어 조건식의 결과에 따라 실행 블록을 선택한다.

if문의 조건식이 true이면 if문의 블록이 실행되고, 조건식이 false이면 else블록이 실행 되며, 조건식의 결과에 따라 이 2개의 블록 중 어느한 블록의 내용만 실행하고 전체 if문을 벗어나게 됨.

 

// if-else문

package sec01.exam02;

public class IfElseExample {
	public static void main(String[]args) {
    int score = 85;
    
    if(score>=90){
      System.out.println("점수가 90보다 큽니다.");
      System.out.println("등급은 A입니다.");
    } else {
      System.out.println("점수가 90보다 작습니다.");
      System.out.println("등급은 B입니다.");
    }
  }
}

// 실행 결과
// 점수가 90보다 작습니다.
// 등급은 B입니다.

 


if-else if-else문

조건문이 여러 개인 if문도 있는데, 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록을 선택할 수 있는데 if 블록의 끝에 else if문을 붙이면 된다.

else if문의 수는 제한이 없으며, 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어나게 되며, else if 블록의 마지막에는 else 블록을 추가할 수 있는데, 모든 조건식이 false일 경우 else 블록을 실행하고 if문을 벗어나게 됨.

 

// if else if else문

package sec01.exam03;

public class IfElseIfElseExample {
	public static void main(String[]args) {
    int score = 75;
    
    if(score >= 90) {
      System.out.println("점수가 100~90입니다.");
      System.out.println("등급은 A입니다.");
    } else if(score >= 80) {
      System.out.println("점수가 80~89입니다.");
      System.out.println("등급은 B입니다.");
    } else if(score >= 70) {
      System.out.println("점수가 70~79입니다.");
      System.out.println("등급은 C입니다.");
    } else {
      System.out.println("점수가 70 미만입니다.");
      System.out.println("등급은 D입니다.");
    }
  }
}

// 실행 결과
// 점수가 70~79입니다.
// 등급은 C입니다.

 

** 연습 문제

// 주사위의 번호 뽑기

package sec01.exam04;

public class IfDiceExample {
	public static void main(String[]args) {
    	int num = (int)(Math.random() * 6) + 1;
        
        if(num == 1) {
        System.out.println("1번이 나왔습니다.");
      } else if(num == 2) {
        System.out.println("2번이 나왔습니다.");
      } else if(num == 3) {
        System.out.println("3번이 나왔습니다.");
      } else if(num == 4) {
        System.out.println("4번이 나왔습니다.");
      } else if(num == 5) {
        System.out.println("5번이 나왔습니다.");
      } else {
        System.out.println("6번이 나왔습니다.");
     }
   }
 }
 
 // 실행 결과
 // 4번이 나왔습니다.
 // 임의의 정수를 뽑는 Math.random()메소드를 활용
 // 이 메소는 0.0과 1.0사이에 속하는 double타입의 난수 하나를 리턴하기 때문에 각 변을 int타입으로
 // 강제 타입 변환하여 하나의 정수값을 얻음.
 // 이 상태에서 각 변에 1을 더하면 비로소 1~10 사이의 정수 중에서 하나의 정수를 얻게 됨.

** 로또 번호 뽑기는 int num = (int) (Math.random( ) * 45) + 1;

 


switch문

switch문은 if문과 마찬가지로 조건 제어문이지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 결정됨.

if문은 조건식의 결과가 true,false 두 가지밖에 없기 때문에 경우의 수가 많아질수록 else-if문을 반복적으로 추가해야 하는데, 

switch문은 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if문보다 코드가 간결함.

 

switch문은 괄호 안의 변수 값과 동일한 값을 갖는 case로 가서 실행문을 실행하고, 만약 괄호안의 변수 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행하며, default는 생략 가능.

 

// switch문

package sec01.exam05;

public class SwitchExample {
	public static void main(String[]args) {
    	int num = (int)(Math.random() * 6) + 1;
        
        switch(num) {
          case 1:
            System.out.println("1번이 나왔습니다.");
          break;
          case 2:
            System.out.println("2번이 나왔습니다.");
          break;
          case 3:
            System.out.println("3번이 나왔습니다.");
          break;
          case 4:
            System.out.println("4번이 나왔습니다.");
          break;
          case 5:
            System.out.println("5번이 나왔습니다.");
          break;
          default:
            System.out.println("6번이 나왔습니다.");
          break;
     }
   }
 }
 
 // 실행 결과
 // 5번이 나왔습니다.
 // case 끝에 break가 붙어 있는 이유는 다음 case를 실행하지 않고 switch문을 빠져나가기 위해서.

 

// break문이 없는 case

package sec01.exam06;

public class SwitchNoBreakCaseExample {
	public static void main(String[]args) {
      int time = (int) (Math.random() * 4) + 8;
      System.out.println("[현재시간: " + time + " 시]");
      
      switch(time) {
        case 8:
          System.out.println("출근합니다.");
        case 9:
          System.out.println("회의를 합니다.");
        case 10:
          System.out.println("업무를 봅니다.");
        default:
          System.out.println("외근을 나갑니다.");
      }
   }
}

// [현재시간: 9 시]
// 회의를 합니다.
// 업무를 봅니다.
// 외근을 나갑니다.

 

// char 타입의 switch문

package sec01.exam07;

public class SwitchCharExample {
	public static void main(String[]args) {
      char grade = 'B';
      
      switch(grade) {
        case 'A':
        case 'a':
          System.out.println("우수 회원입니다.");
          break;
        case 'B':
        case 'b':
          System.out.println("일반 회원입니다.");
          break;
        default:
          System.out.println("손님입니다.");
      }
   }
}

// 실행 결과
// 일반 회원입니다.

 

// String 타입의 switch문

package sec01.exam08;

public class SwitchStringExample {
	public static void main(String[]args) {
      String position = "과장";
      
      switch(position) {
        case "부장":
          System.out.println("700만원.");
          break;
        case "과장":
          System.out.println("500만원.");
          break;
        default: 
          System.out.println("300만원.");
      }
   }  
}

// 실행 결과
// 500만원

 

🔘 if문: if(조건식) {...}을 말하며 조건식이 true가 되면 중괄호 내부를 실행.

 

🔘 if-else문: if(조건식){...} else {...}를 말하며 조건식이 true가 되면 if 중괄호 내부를 실행하고, false가 되면 else 중괄호 내부를 실행.

 

🔘 if-else if-else문: if(조건식1) {...} else if (조건식2) {...} else {...}를 말하며 조건식1이 true가 되면 if 중괄호 내부를 실행하고, 조건식2가 true가 되면 else if 중괄호 내부를 실행하며, 조건식1과 조건식2가 모두 false가 되면 else 중괄호 내부가 실행.

 

🔘 switch문: switch(변수) {case 값1: ... case 값2: ... default: ... }를 말하며 변수의 값이 값1이면 첫 번째 case 코드를 실행하고, 값2이면 두번째 case 코드를 실행, 값1과 값2가 모두 아니면 default코드를 실행.