Published 2022. 10. 18. 16:23
 
     switch 조건문
     
     - if 문과 "차이점"이라면? > if문 안의 조건식은 자유롭게 기술 가능 (범위에 대한 조건, 동등비교 등등)
      -switch문은  동등비교만 가능 (동등비교할 값들만 작성) > 실행할 구문만 실행하고 자동으로 빠져나오질 못함!
         (직접 break;문 작성해야함)
    
      [표현법]
      switch(동등비교할 대상자){ case 값1 : 실행코드1; break; case 값2 : 실행코드2; break; ...
     * [default : 위의 값들과 모두 일치하지않을 경우 실행코드; (else와 비슷)] }
    
 
예시) 
1. 정수를 입력받아 1일 경우 "빨간색입니다." 2일 경우 "파란색입니다." 3일 경우 "초록색입니다." 그외의 값 입력했을경우 "잘못입력하셨습니다."를 출력하기 
- if 문 사용경우 
 public void method1() {
    
        Scanner sc = new Scanner(System.in);
        System.out.print("1~3사이의 정수 입력: ");
        int num = sc.nextInt();

        if(num == 1 ) {
          System.out.println("빨간색입니다.");
          } else if(num == 2) {
          System.out.println("파란색입니다."); }
          else if(num == 3) {
          System.out.println("초록색입니다."); } 
          else { System.out.println("잘못입력하셨습니다."); }
          }

- switch 문 사용 

 
switch (num) {
        case 1:
            System.out.println("빨간색입니다.");
            break;
        case 2:
            System.out.println("파란색입니다.");
            break;
        case 3:
            System.out.println("초록색입니다.");
            break;
        default:
            System.out.println("잘못입력하셨습니다.");
        }
    }

 

2. 구매하고자하는 과일을 입력받아 가격을 출력 하기

public void method2() {
        Scanner sc = new Scanner(System.in);
        System.out.print("구매하고자하는 과일(사과/바나나/복숭아) 입력: ");
        String fruit = sc.nextLine();

        int price = 0;// 과일의 가격을 보관할 변수(int형의 기본값 0)

        switch (fruit) {
        case "사과":
            price = 1000;
            break;
        case "바나나":
            price = 2000;
            break;
        case "복숭아":
            price = 3000;
            break;
        default:
            System.out.println(fruit + "은(는) 판매하는 과일이 아닙니다.");
            return;
        }

        System.out.printf("%s의 가격은 %d원입니다.", fruit, price);
        // xx의 가격은 xxxxx원입니다.
    }
   
******break없는 switch문을 사용하는 예시
  public void method3() {
        Scanner sc = new Scanner(System.in);
        //등급 별 권한
        //1. 일기권한, 글쓰기권한, 관리권한
        //2. 읽기권한, 글쓰기견환
        //3  읽기권한
       
        System.out.print("등급(정수): ");
        int level = sc.nextInt();
       
        switch(level) {
        case 1 : System.out.println("관리권한");
        case 2 : System.out.println("글씨기권한");
        case 3 : System.out.println("읽기권한");
      }
    }

 

3. 성별을 입력받아 'M' 이면 "남학생" / 'F'이면 여학생을 출력 

public void method4() {

        Scanner sc = new Scanner(System.in);
        System.out.print("성별(M/F) : ");
        char gender = sc.nextLine().charAt(0);
       
        switch(gender) {
        case 'm' : case 'M' : System.out.println("남학생"); break; //gender == 'm' || gender == 'M'
        case 'f' : case 'F' : System.out.println("여학생"); break;
        default : System.out.println("성별을 잘못입력하셨습니다.");
        }
    }

4. 사용자에게 달을 입력받아 해당 달의 마지막 날짜 출력

public void method5() {
        //사용자에게 달을 입력받아 해당 달의 마지막날짜 출력
        Scanner sc = new Scanner(System.in);
        System.out.print("1월 ~ 12월 까지 중 하나를 입력(정수로) : ");
        int month = sc.nextInt();
       
        //1,3,5,7,8,10,12 => 31일
        //4,6,9,11 => 30일
        //2 => 28일 또는 29일
       
        switch(month) {
        case 1 : case 3: case 5: case 7 :case 8 :case 10: case 12 : System.out.println("입력하신 월은 31일까지입니다.");
        break;
        case 4 : case 6: case 9 : case 11 : System.out.println("입력하신 월은 30일까지입니다.");
        break;
        case 2 : System.out.println("입력하신 월은 28일 또는 29일까지입니다.");
        break;
        default : System.out.println("반드시 1~12월까지를 입력하셔야합니다.");
        }
    }
}
   

'JAVA' 카테고리의 다른 글

4_4. 제어문 _ 반복문 while, do-while  (0) 2022.10.21
4_3 제어문 _반복문 for문  (0) 2022.10.20
4_1. 제어문(Control) _ 조건문 if  (0) 2022.10.18
2_4 Cast(형변환)_ 자동형변환과 강제형변환  (0) 2022.10.18
2_3 Printf  (0) 2022.10.18
복사했습니다!