if는 boolean 타입으로 true와 false를 판별해 값을 나타낸다.
else if 와 유사해보이는데 개인적으론 더 간결해 보여서 좋은 듯
단, if는 조건을 상세하게 지정할 수 있고, case는 단순하다.
형식은 switch, case, break, default 를 사용하는데,
case 여러 개로 값을 산출한다.
break는 해당하는 case를 찾아 실행한다면 종료되도록 하는 역할이다.
만약 모든 case를 만족하지 않으면 default 값이 실행된다.
switch (조건식) {
case 값1 :
실행문
break;
case 값2 :
실행문
break;
.
.
.
default : //생략가능하다
}
조건식 결과는 정수 또는 문자열이어야 한다.
case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복은 허용하지 않는다.
예제1.
// 100 ~ 90점 A
// 89 ~ 80점 B
// 79 ~ 70점 C
// 69 ~ 60점 D
// 59점 이하 F
int s = 70;
switch(s) {
case 90 : System.out.println("A학점");
break;
case 80 : System.out.println("B학점");
break;
case 70 : System.out.println("C학점");
break;
case 60 : System.out.println("D학점");
break;
default : System.out.println("F학점");
}
만약 상기 코드에서 break 값이 존재하지 않는다면, int s = 80; 일 때 결과 값은 다음과 같다.
그리고 case에 없는 값을 사용한다면, 예를 들어 95점을 입력하면 default가 실행되어 F학점이라는 결과가 나온다.
int와 int를 연산하면 int로 결과가 산출된다는 특성을 이용하여 코드를 늘리지 않고 해결해보라고 하셨는데
난 결국 못했다.. ㅜㅜ
정답은 다음과 같다.
switch(s/10) {
case 9 : System.out.println("A학점");
break;
case 8 : System.out.println("B학점");
break;
case 7 : System.out.println("C학점");
break;
case 6 : System.out.println("D학점");
break;
default : System.out.println("F학점");
}
왜 나는 생각을 못 했을까...
위 코드에서는 100점 입력 시 F학점이 나오는데, 그건 'case 10 : ' 만 case 9 앞으로 추가하면 된다.
'자바' 카테고리의 다른 글
반복문 While (2022-06-23) (0) | 2022.06.23 |
---|---|
반복문 For (2022-06-23) (0) | 2022.06.23 |
난수 발생 (2022-06-23) (0) | 2022.06.23 |
22일자 과제 풀이 - 조건 연산자로 정수 3개의 최대값과 최소값 구하기 (2022-06-23) (0) | 2022.06.23 |
조건문 if, else, else if (2022-06-22) (0) | 2022.06.22 |