switch문
- if문과 유사하게 조건에 따른 실행 문장을 달리하는 조건문이다.
- if문과 달리 조건식에 정수값, 문자열, Enum 상수 중 하나의 결과가 와야한다.
- case문에는 조건식 판별 결과와 비교할 값을 사용하며, 범위 지정이 불가능하다. 값만 사용가능하다.
- 조건식 결과와 일치하는 case문의 : (콜론)뒤에 있는 문장들을 차례대로 실행한다.
- case문의 값은 중복될 수 없으며, 순서는 상관없다.
- break문은 각 case문의 영역을 구분하는 역할을 한다. 그렇기 때문에, 각 case문의 마지막에 break문을 적지 않는 실수를 하면 안 된다.
- case문 실행 후 break문을 사용하여 swith ~ case문을 빠져나갈 수 있으며, break문이 없을 경우에는 조건과 상관없이 다른 case문 또는 default문을 모두 실행한다. (break문을 만나거나 switch~case문이 끝날때 까지 실행)
<기본 문법>
switch(판별 변수) {
case 값1 :
// 판별 변수가 값1과 일치할 경우 실행할 문장들...
break;
case 값2 :
// 판별 변수가 값2와 일치할 경우 실행할 문장들...
break;
default: // 일치하는 case문이 없을 경우 실행할 문장들....
}
ex) 학생 점수 (score)에 대한 학점(grade) 판별
A학점: 90 ~ 100점
B학점: 80 ~ 89점
C학점: 70 ~ 79점
D학점: 60 ~ 69점
F학점: 0 ~ 59점
그외: 점수 입력 오류
(단, score에는 int형에 저장될 수 있는 범위의 데이터가 저장된다고 가정한다.)
"x학점" 이라고 출력하기
✍입력
public class pratice1 {
public static void main(String[] args) {
int score = 70;
String grade = "";
if(score >= 0 && score <= 100) {
switch(score/10) {
case 9 :
grade = "A";
break;
case 8 :
grade = "B";
break;
case 7 :
grade = "C";
break;
case 6:
grade = "D";
break;
default:
grade = "F";
}
grade += "학점";
System.out.println(grade);
} else {
System.out.println("점수 입력 오류");
}
}
}
- if문과 switch문을 중복 사용하였다. 먼저 if문에서 score의 범위를 지정하였다.
- if문의 조건 0 <= score <= 100을 벗어나는 음수 또는 100이상의 값을 입력하면 "점수 입력 오류"가 출력되도록 했다
- 각 학점별 점수의 공통점을 찾아냈다. A학점은 90점대, B학점은 80점대, C학점은 70점대....... 그래서 swtich 판별 변수로 score를 10으로 나눈 값을 사용하였다.
💻입력


70 입력 101 입력
ex) 세 정수 n1, n2, n3 중 최대값 출력. 최대값: 30
✍입력
public class pratice1 {
public static void main(String[] args) {
int n1 = 100, n2 = 50, n3 = 500;
String result = "최대값 : ";
if(n1>n2) {
if(n1>n3) {
result += n1;
} else {
result += n3;
}
} else if (n2>n3) {
result += n2;
} else {
result += n3;
}
System.out.println(result);
}
}
- 중첩 if문을 사용하였다.
- 우선 n1과 n2를 먼저 비교한다. n1이 n2보다 크다고 가정을 해보자. (이때 최대값은 n1이 된다) 여기서 다시 n1과 n3을 한 번 더 비교한다. n1이 크다면 최대값은 n1이 될 것이고, 그게 아니라면 최대값은 n3이 될 것이다.
- 첫번째 if문에서 n1이 n2보다 작다고 판단되는 경우 else if문의 (n2>n3)이 실행된다. 이때 n2가 더 크다면 최대값은 n2가 된다. 그게 아니라면 else문이 실행되면서 최대값은 n3이 된다.
💻출력
✍입력(삼항연산자 사용)
public class pratice1 {
public static void main(String[] args) {
int n1 = 100, n2 = 200, n3 = 70;
int max = (n1>n2) ? n1 : n2;
max = (max>n3) ? max : n3;
System.out.println("최대값 : " + max);
}
}
💻출력
'개발 > Java' 카테고리의 다른 글
[Java] 중첩 while문 (0) | 2023.01.03 |
---|---|
[Java] while 반복문 (0) | 2023.01.03 |
[Java] 중첩 if문 (0) | 2023.01.02 |
[Java] 조건문 (0) | 2022.12.29 |
[Java] 삼항 연산자 (0) | 2022.12.27 |