본문 바로가기
Backend/Java

Java 기초 문법 : 조건문 (if, switch)

by 코딩쥐 2024. 5. 12.

Java에서 사용되는 조건문은 if문과 swtich case문이 있으며, 조건에 따라 로직을 실행한다.

 

if

  • if (조건식) {조건식이 true일 때 수행할 문장}
    if문의 조건식이 참이면 if문 {}안에 있는 로직이 실행되고 아닐경우 if문을 무시하고 바로 아래의 로직을 실행한다.

  • if (조건식) {조건식이 true일때 수행할 문장}
    else{조건식이 false일 때 수행할 문장}
    해당 조건이 참일 경우 if문의 로직을 해당 조건이 거짓일 경우 else 문 장안의 로직을 실행한다.

  • if (조건식1) {
       if (조건식2) { 조건식 1, 조건식 2 모두가 true일때 수행될 문장 }
      else { 조건식 1 true, 조건식2가 false}
    } else { 조건식 1이 false일때 수행 } 
    if문 안에 if문을 넣을 수 있고 또 그 안에 if문을 중첩시켜 사용 가능하다. 

import java.util.Scanner;

public class Test {
public static void main(String[] args) {

    int score = 0;
    char grade = ' ', opt = ' '; 
    //변수선언하여 저장공간 획득

    System.out.print("점수를 입력하세요.>");
    Scanner scanner = new Scanner(System.in);
    score = scanner.nextInt();
   //화면을 통해 입력받은 숫자를 score에 저장

    if (score>=90){  //if문
	grade = 'A';
        if ( score >= 98 ) { 
        opt = '+';
        } else if ( score < 94) {
        opt = '-';
        }
    //중첩if문 사용하여 score에 따라 opt 값 저장
    } else if (score >= 80){ //if - else if문
    grade = 'B';
        if(score >= 88) {
        opt = '+';
        } else if (score<84) {
        opt = '-';
        }
    } else { //if - else문
    grade = 'C';
    }
    //score의 값에 따라 greade변수의 값 설정됨

    System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);

 }
}

 

Switch case 

처리해야하는 경우의 수가 많을때 유용한 조건문으로 조건식의 결과와 일치하는 case 문으로 이동하여 문장 수행한다. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다. Switch 문의 조건식 결과는 정수 또는 문자열이어야 하며, case 문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복되지 않아야 한다. 

  • switch (조건식){
    case 값1 : 
    조건식의 결과가 값1과 같을경우 수행
    break;

    case 값2 :
    조건식의 결과가 값2와 같을경우
    break;

    default: 
    조건식의 결과와 일치하는 case문 없을 경우 수행
    }
import java.util.Scanner;

public class Test {
public static void main(String[] args) {

    System.out.print("현재 월을 입력하세요.>");
    Scanner scanner = new Scanner(System.in);
    int month = scanner.nextInt();
    //화면을 통해 입력받은 내용을 month에 저장

    switch(month) {
    case 3: case 4: case 5:
    System.out.println("현재 계절은 봄입니다.");
    break;
    
    case 6: case 7: case 8:
    System.out.println("현재 계절은 여름입니다.");
    break;
    
    case 9: case 10: case 11:
    System.out.println("현재 계절은 가을입니다.");
    break;
    
    default:
    System.out.println("현재 계절은 겨울입니다.");
    //month와 일치하는 case 문으로 이동하여 계절을 알려주는 코드
	}
 }
}

 

yield

13버전부터 도입된 키워드로, switch 표현식에 사용되며 switch 문 내부의 case에서 값을 반환하는데 쓰인다.

 

Arrow Case Labels

14버전부터 도입되어 swtich case를 간결하게 쓰기 위해 패치되었다. case 문의 return 타입을 arrow function 쓰는 형태로 사용이 가능하다. 

import java.util.Scanner;

public class Example1 {
    public static void main(String[] args) {
        System.out.print("현재 월을 입력하세요. > ");
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();

        String season = switch (month) {
            case 12, 1, 2 -> {
                yield "겨울";
            }
            case 3, 4, 5 -> {
                yield "봄";
            }
            case 6, 7, 8 -> {
                yield "여름";
            }
            case 9, 10, 11 -> {
                yield "가을";
            }
            default -> {
                yield "유효하지 않은 월입니다."; // yield를 사용하여 반환
            }
        };

        System.out.println("현재 계절은 " + season + "입니다.");
    }
}