본문 바로가기
Language/Java

Switch문을 이용한 자판기 코드 전 / 후(break;)

by 쿠키오빠 2024. 9. 3.
반응형

switch 문의 기본 형식과 오류 상황 체크하기!

-스위치문 형식-

switch(조건) {
case :
break;
}

if은 if(조건문)이 삽입되는 것과 다르게 switch문은 switch (조건) 하나만 들어가는 것이 특징이다.

조건이 달른 코드를 작성한다면 보통 if문으로 커버가 될 것이다.

하지만 몇몇 조건들에서는 if문보다 switch문을 쓰는 것이 훨씬 간단한 코드가 된다. (추후 포스티 예정)


일단 switch문을 사용하여 간단한 음료자판기 코드를 작성해 보았다.

public void testSwitchVendingMachine() { // 24-09-02 4교시 switch 문 break; 활용
        System.out.println("============  음료 자판기 =============");
        System.out.println(" s / m / n / c / h / k ");
        System.out.println("=====================================");
        Scanner scr = new Scanner(System.in);
        System.out.print("음료를 선택해 주세요.");
        String selectDrink = scr.nextLine();

        // 투입 가격을 위한 변수 선언
        int price = 0;

        switch (selectDrink) {
            case "s" :
                System.out.println("사이다를 선택했습니다.");
                price = 500;
            case "m" :
                System.out.println("맥콜을 선택했습니다.");
                price = 300;
            case "n" :
                System.out.println("눈의솔을 선택했습니다.");
                price = 400;
            case "c" :
                System.out.println("콜라을 선택했습니다.");
                price = 600;
            case "h" :
                System.out.println("환타을 선택했습니다.");
                price = 800;
            case "k" :
                System.out.println("밀키스을 선택했습니다.");
                price = 700;
        }
        System.out.println(price + "원을 투입해 주세요");

위 코드의 문제점은 break; 구문을 넣지 않았다는 것이다.

break;을 삽입하지 않아, k음료 선택(호출) 시 모든 음료가 출력되는 오류가 발생한다.

break;은 해당 연산을 훑고 그 연산을 끝내(나가)주는 역할이므로 잘 넣어 줘야 한다.


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ break; 추가 및 개선된 코드 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

   System.out.println("===========  자판기 개선해 보기 ============");
        System.out.println("================================================");

        String orderMenu = "";

        switch (selectDrink) { // break; 만나면 조건문을 빠져 나온다.
            case "s" :
                System.out.println("사이다를 선택했습니다.");
                price = 500;
                orderMenu = "사이다";
                break;
            case "m" :
                System.out.println("맥콜을 선택했습니다.");
                price = 300;
                orderMenu = "맥콜";
                break;
            case "n" :
                System.out.println("눈의솔을 선택했습니다.");
                price = 400;
                orderMenu = "눈의솔";
                break;
            case "c" :
                System.out.println("콜라을 선택했습니다.");
                price = 600;
                orderMenu = "콜라";
                break;
            case "h" :
                System.out.println("환타을 선택했습니다.");
                price = 800;
                orderMenu = "환타";
                break;
            case "k" :
                System.out.println("밀키스을 선택했습니다.");
                price = 700;
                orderMenu = "밀키스";
                break;
        }
        System.out.println(orderMenu + " 를 선택하셨습니다. " + price + "원 을 투입해 주세요");

orderMenu라는 변수를 지정했고 각 case 마다 break;을 입력하여 원하는 값만 출력되도록 수정하였다.

이상 없는 자판기 코드가 완성되었다!

반응형