*JAVA*

[java] 조건문 - Switch문

깐부로부터 2021. 10. 19. 23:22

[표현법]

switch(아래에 기술할 값들과 동등비교를 할 대상자)

switch(정수, 문자, 문자열) {

case 값1 : 실행할 코드1; // 대상자 == 값1이 true일 경우 실행할 코드

                             break; // switch 영역을 빠져나간다.

case 값2 : 실행할 코드2; // 대상자 == 값2가 true일 경우 실행할 코드

                             break;

case 값n : 실행할 코드n; // 대상자 == 값n이 true일 경우 실행할 코드

                             break;

default : 실행할 코드; //조건식의 결과와 일치하는 case문이 없을 때 수행됨, 생략가능!

                             ( == else블럭처럼)

}

-break; 빼먹지 말자!!! (스위치문을 완전히 빠져나가기 위해)

break문이 없을 경우, 위에서 아래로 코딩되는 순서대로 다음 case 값이 출력된다.

-switch문 ⇒ if문 으로 전환 : 언제든지 가능! 100%

-if문 ⇒ switch문 으로 전환 : 항상 가능하지 않다.(제약조건 때문에)

          switch문의 조건식 결과가 정수, 문자, 문자열 이어야 하기 때문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public void method1() {
        
        //홀수 짝수 판별( 양수냐 음수냐는 판단하지 않겠다!)
        Scanner sc = new Scanner(System.in);
        
        System.out.println("정수 입력 : ");
        int num = sc.nextInt();
        
        int oddEven = num % 2// 0 : 짝, 1 : 홀
        
        switch(oddEven) {
        
        case 0System.out.println("짝수다");// oddEven == 0
            break;
        case 1:    System.out.println("홀수다");// oddEven == 1
        
        }
    }
 
 
public void method2() {
        
        // 양수다, 음수다, 0이다.
        
        // 1. 사용자로부터 주민번호 입력받기 (String personId) => 000000 - 1234567
        Scanner sc = new Scanner(System.in);
        
        System.out.println("주민번호 입력(-포함) : ");
        String personId = sc.nextLine();
        
        // 2. 입력받은 주민번호로 부터 성별에 대핟ㅇ하는 문자 추출
        char gender = personId.charAt(7);
 
 
// 3. 스위치문을 사용해서 조건문 작성
        
        switch(gender) {
        
        case '1' : System.out.println("남자입니다."); // gender == '1'
                        break;
        case '2' : System.out.println("여자입니다."); // gender == '2'
                        break;
        case '3' : System.out.println("남자입니다."); // gender == '3'
                        break;
        case '4' : System.out.println("여자입니다."); // gender == '4'
                        break;
        default : System.out.println("외계인입니다.");
        // 뒤에 더이상 실행할 조건들이 없기 때문에 break;를 쓰지 않는다.
        }
    }
    
    
// 3번 스위치문 좀더 간결하게 코드 작성하는법!!
        switch(gender) {
        
        case '1' : // gender == '1', break;가 안걸려 있어서 바로밑 case 실행!!
        case '3' : System.out.println("남자입니다."); // gender == '3'
                        break;
        case '2' :  // gender == '2'
        case '4' : System.out.println("여자입니다."); // gender == '4'
                        break;
        default : System.out.println("외계인입니다.");
        // 뒤에 더이상 실행할 조건들이 없기 때문에 break;를 쓰지 않는다.
        }
    }
cs

 

switch문에 return; 써보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public void method3() {
        
        // 사용자에게 구매할 과일 이름을 입력받아
        // 각 과일마다의 가격을 출력해줄 것
        
        // 샤인머스캣,     바나나,     메론,     수박,    귤
        // 20000        4000    8000    5000    30000
        
        // 우리집에 없어~ 딴집가~ 안팔아~
        
        
        Scanner sc = new Scanner(System.in);
        
        System.out.println("어서오세용~ 과일과게입니다~");
        System.out.println("샤인머스캣, 바나나, 메론, 수박, 귤을 판매합니다!");
        System.out.print("무엇을 구매하시겠어요? => ");
        
        String fruit = sc.next();
        
        int price = 0;
        
        switch(fruit) {
        
        case "샤인머스캣" : price = 20000;
                            break;
        case "바나나" : price = 4000;
                            break;
        case "메론" : price = 8000;
                            break;
        case "수박" : price = 5000;
                            break;
        case "귤" : price = 30000;
                            break;
        default : System.out.println("우리집에 없어~ 딴집가~ 안팔아~");
        return// 현재 실행되고 있는 메소드 영역을 아예 빠져나간다.
                // 메소드 호출 부분으로 돌아가다~
        }
        /*if(price != 0)*/System.out.printf("%s의 가격은 %d원 입니다.", fruit, price);
    }// method3() //끝
cs

 

 

switch문에 .equals써보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void method4() { 
        // 로그인 기능
        
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Id : ");
        String userId = sc.nextLine();
                        
        System.out.print("Password : ");
        String userPwd = sc.nextLine();
        
        String id = "user01";
        String pwd = "user12345";
        
        if(userId.equals(id) && userPwd.equals(pwd)) {
            System.out.println("로그인 성공 ~ 어서오고~ ");
        }else {
            //1. id가 일치하지 않았을 경우
            //2. pw가 일치하지 않을 경우
            if(!userId.equals(id)) {
                System.out.println("id가 일치하지 않습니다.");
            }else {
                System.out.println("비밀번호가 일치하지 않습니다.");
            }
        }
cs

1. 기본자료형 : boolean, char, short, int, long, float, double
 => 기본자료형 같은 경우에는 동등비교 시(==, !=) 비교가 잘 됨.

2. 참조자료형 : String
=> 동등비교(==, !=)가 불가능함
왜? 참조자료형의 경우 실제로 변수에 담기는 값이 '주소값'이기 때문.
문자열을 비교할때 : equals() 메소드를 사용한다. 결과는 => true, false
[표현법] 문자열.equals(비교할대상)

'*JAVA*' 카테고리의 다른 글

[java] While문  (0) 2021.10.20
[java] 반복문 - for문  (0) 2021.10.19
[java] 조건문 - if-esle if문  (0) 2021.10.19
[java] 조건문 - if-else문  (0) 2021.10.19
[java] 조건문 - if문  (0) 2021.10.19