Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

기록 저장소

[Java #6] 조건문_switch 본문

kitri 노트/java

[Java #6] 조건문_switch

resault 2019. 3. 14. 17:16

4. switch ~ case문

1) 형식

switch(값) {
    case 값1 : 실행문1; break;
    case 값2 : 실행문2; break;
    .
    .
    .
    default : 실행문N;
}
>>    switch의 값과 일치하는 실행문이 실행됨


2) 참고사항

▷ 등가비교만 가능    (orcle의 decode와 비슷)

▷ 값 비교는 숫자형만 가능 (숫자형, char-문자는 아스키 코드값이 있으므로)
▷ 문자열은 아스키 코드값이 없으므로 String은 원칙적으로 불가 but, java 1.7이상에서는 가능

//number
int num = 1;
switch (num) {
    case 1 : System.out.println("1입니다."); break; //break문 쓰지 않으면 값을 만족하는 실행문 이후가 모두 실행문이 되어버림
    case 2 : System.out.println("2입니다."); break;
    case 3 : System.out.println("3입니다."); break;
    default : System.out.println("123입니다.");    
}

//char
char c = 'a';
switch(c) {
    case 97 : System.out.println("a입니다."); break;
    case 98 : System.out.println("b입니다."); break;
    case 99 : System.out.println("c입니다."); break;
    default : System.out.println("a b c입니다.");            
}

//String    (java 1.7 이상에서만 가능)
switch(str) {
    case "oracle" : System.out.println("oracle입니다."); break;
    case "java" : System.out.println("java입니다."); break;
    case "jsp" : System.out.println("jsp입니다."); break;
    default : System.out.println("전부아닙니다.");
}


▷ 변수의 초기화

// 초기화 방법1
int com = 2;
String b;
switch (com) {
    case 0 : b = "가위"; break;
    case 1 : b = "바위"; break;
    default : b = "보";
}
System.out.println(b);

// 초기화 방법2
int com = 2;
String b= " ";
switch (com) {
    case 0 : b = "가위"; break;
    case 1 : b = "바위"; break;
    case 2 : b = "보"; break;
}
System.out.println(b);

// 초기화 방법3    //이게 왜 에러나지??
int com = 2;
String b;
switch (com %3) {
    case 0 : b = "가위"; break;
    case 1 : b = "바위"; break;
    case 2 : b = "보"; break;
}
System.out.println(b);



3) 예제

/*score(점수)가
    90이상이면 학점은 A
    80이상이면 학점은 B
    70이상이면 학점은 C
    60이상이면 학점은 D
    60미만이면 학점은 F
X5이상이면 x+학점
결과 : 점수가 xx점이므로 x학점입니다.*/
int score = 96;
int a = score /10;
String grade = " ";
switch (a) {
    case 10 : case 9 : grade = "A"; break;
    case 8 : grade = "B"; break;
    case 7 : grade = "C"; break;
    case 6 : grade = "D"; break;
    default : grade = "F";
}
if (score > 60 && (score == 100 || score %10 >= 5)) {
    grade += "+";
}
System.out.println("점수가 " + score + "점이므로 " + grade + "학점입니다.");


/*
* 가위 바위 보 게임
1. 0 (가위), 1 (바위), 2 (보)
2. 컴 : 난수 (0, 1, 2)
3. 결과 Logic (이, 지, 비)
4. 결과 출력
    나 : 보, 컴 : 가위, 결과 : 졌다.
    나 : 보, 컴 : 바위, 결과 : 이겼다.
    나 : 보, 컴 : 보, 결과 : 비겼다.
*/
int my = 2;
int com = (int) (Math.random() * 3);
String resultStr;
int result = (my - com +2) %3;
if (result == 0) {
    resultStr = "이겼다.";
} else if (result == 1) {
    resultStr = "졌다.";
} else {
    resultStr = "비겼다.";
}
String a;
switch (my)    {
    case 0 : a = "가위"; break;
    case 1 : a = "바위"; break;
    default : a = "보";
}
String b;
switch (com) {
    case 0 : b = "가위"; break;
    case 1 : b = "바위"; break;
    default : b = "보";
}
System.out.println("나 : " + a + ", 컴 : " + b + ", 결과 : " + resultStr);


▷ []switch문에서 이렇게 쓰면, case 1이 만족하든 아니든 "이겼다"가 출력됨  이거 뭔지 확인
    결국 my - com의 값이 -2 일때, 또는 1일때 이겼다가 출력되는거 아닌가?
if (my == com) {
    result = "비겼다.";
} else {
    switch ( my - com ) {
        case -2 : case 1 : result = "이겼다."; break;
        default : result = "졌다.";
    }
}

'kitri 노트 > java' 카테고리의 다른 글

[Java #8] 반복문_while  (0) 2019.03.18
[Java #7] 반복문_for  (0) 2019.03.18
[Java #5] 조건문_if  (0) 2019.03.14
[Java #4] Operator  (0) 2019.03.12
[Java #3] variable & primitive type  (0) 2019.03.11