switch (key) { //()안에 비교할 값 넣음
case value: //case value값이랑 비교
break; // break를 만나면 switch문을 빠져나온다.
default: //case의 경우를 제외한 나머지, 디폴트값
break;
}
if문과의 비교 1) : 입력값이 특정 값에 해당하면 계산하는 코드
String operator = sc.nextLine();
if("+".equals(operator)) {
calc_result = num1 + num2;
}
else if("-".equals(operator)) {
calc_result = num1 - num2;
}
else if("*".equals(operator)) {
calc_result = num1 * num2;
}
else if("/".equals(operator)) {
calc_result = (double)num1 / num2;
}
else {
System.out.println("[경고] 사칙연산 선택은 + - * / 만 입력하세요");
sc.close();
return;
}
switch문으로 변환 1)
switch (operator) {
case "+": // operator 값이 "+"와 같다 라면
calc_result = num1 + num2;
break;
case "-": // operator 값이 "-"와 같다 라면
calc_result = num1 - num2;
break;
case "*": // operator 값이 "*"와 같다 라면
calc_result = num1 * num2;
break;
case "/": // operator 값이 "/"와 같다 라면
calc_result = (double)num1 / num2;
break;
default: // case를 제외한 나머지 경우
System.out.println("[경고] 사칙연산 선택은 + - * / 만 입력하세요");
sc.close();
return;
}
//switch구문에서 break;를 만나면 switch(operator){} 부분을 빠져나간다.
if문과의 비교 2) : 입력값이 특정 값인 경우+ 그 값에서 if문을 사용해서 특정 경우에 따라 값이 또 달라질 경우
if("/".equals(operator)) { // /의경우
if(num1 % num2 == 0) {
result = num1 + operator + num2 + "=" + (int)calc_result;
}
else { // * - + 의경우
result = num1 + operator + num2 + "=" + calc_result;
}
} else {
result = num1 + operator + num2 + "=" + (int)calc_result;
}
switch문으로 변경 2)
switch (operator) {
case "/":
if(num1 % num2 == 0) {
result = num1 + operator + num2 + "=" + (int)calc_result;
}
else { // * - + 의경우
result = num1 + operator + num2 + "=" + calc_result;
}
//switch속에 if를 써도 ok
break;
default: // case를 제외한 나머지 경우
result = num1 + operator + num2 + "=" + (int)calc_result;
break;
}
(switch 안 if 쓰기 가능함)
반올림과 switch문
switch (((byte)average)/10) {
case 10:
case 9: //((byte)average)/10 값이 10 또는 9라면
// 90 <= (byte)average <= 100 / 90 91 92 93 94 .. 98 99 / 90/10 = 9 91/10 = 9 99/10 = 9... 100/10 = 10
hakjum = 'A';
break;
case 8:
hakjum = 'B'; // ((byte)avg)/10 값이 8이라면
break;
case 7:
hakjum = 'C';
break;
case 6:
hakjum = 'D';
break;
default:
hakjum = 'F';
break;
}
switch (((byte)average)/10) :
avg를 byte로 형변환 한 다음에 /10하는 것임(순서 헷갈릴 수 있으니 주의) 헷갈릴 수 있으니 괄호처리를 꼭 해준다.
실수->정수로 하면 소수점 절삭되는 것을 주의!
switch문 주의사항>
break가 없을 경우 참인 조건문에서부터 빠져나오지않고 모두 실행된다.
ex. 예시 코드>>
switch (hakjum) {
case 'A':
gift += "놀이공원이용권,"; //할당연산자인데,gift에 문자열 삽입
// gift = ""(초기화값) + "놀이공원이용권,"
case 'B':
gift += "치킨,"; // gift = gift + "치킨,"
case 'C':
gift += "피자,"; // gift = gift + "피자,"
case 'D':
gift += "아이스크림"; // gift = gift + "아이스크림"
break; //break;를 만나면 switch문 빠져나감
default:
gift = "꿀밤3대"; // 초기화
break;
} // end of switch(hakjum)=====
break;를 case 'd'에 담아서 'A' 의 경우 a~d까지 출력이 된다.