반응형
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;을 입력하여 원하는 값만 출력되도록 수정하였다.
이상 없는 자판기 코드가 완성되었다!
반응형
'Language > Java' 카테고리의 다른 글
| DTO(Data Transfer Object)는 왜 써야 할까~? (0) | 2024.09.12 |
|---|---|
| 자바(java) 클래스 - instanceOf 연산자 (0) | 2024.09.11 |
| 스캐너 오류 발생 시 해결 방법 체크 (인덱스 index) (9) | 2024.09.03 |
| 리턴(return) 기본 정보 및 메서드 추가 정리 (4) | 2024.09.02 |
| 메서드 기본( with static) (0) | 2024.09.02 |