기록 저장소
[Java #6] 조건문_switch 본문
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 |