- switch문도 조건문 중 하나입니다.
- if문처럼 사용할 수도 있겠지만 보통 조건이 범위가 있는 것보다 같다처럼 처리되는 경우에 많이 사용합니다.
- 이번에는 switch문을 사용해서 조건별로 코드를 처리하는 법을 보도록 하겠습니다.
1. switch 기본문법
- switch는 키워드(예약어)를 많이 사용합니다.
- switch, case, break, default입니다.
- 위의 4개는 변수명으로 작성하면 안되겠죠?
1) switch 기본문법
## 문법
switch(변수 혹은 식) {
case 값1:
변수 혹은 식이 값1과 맞는 경우 코드;
break;
case 값2:
변수 혹은 식이 값2가 맞는 경우 코드;
break;
default:
값1과 2와 모두 맞지 않는 경우 코드;
break;
}
- 위의 case는 계속 추가될 수 있습니다.
- case는 값이 xxx인 경우라고 보면 좋습니다.
- break는 switch문을 벗어나라는 키워드입니다.
- break키워드를 쓰지 않으면 아래 코드도 실행이 되는 불편함이 있습니다.
- 그래서 꼭 break;를 쓴다고 보면 됩니다.
- default는 if문의 else와 같다고 보면 됩니다. 기본 코드처리를 위해 사용하는 키워드입니다.
- default부분이 없다면 생략 가능합니다.
2) switch 기본문법 예제
- switch문은 조건이 정확한 값을 갖는 경우 사용하는 것이 좋다고 했습니다.
- 조건이 ~ 이상이런식을 가능은 하나, 그런 경우는 if문을 더 선호합니다.
- 그럼 정확한 값을 갖는 경우를 문제로 보도록 하겠습니다.
사용자에게 순위를 입력받아, 1이면 [금메달],
2이면 [은메달], 3이면 [동메달],
그외에는 [노메달, 수고하셨습니다.]를
출력하는 프로그램을 만드시오.
- 아래에서는 직접 실습으로 확인해 보겠습니다.
- 패키지(ch11_condition)과 클래스(Ex06_BasicSwitch.java)를 추가해 주세요.
- 기초적 작업을 모르는 분은 아래 주소를 클릭하고 보고 오세요.
https://ossam5.tistory.com/613
## 기본 switch문 실습1 - Ex06_BasicSwitch.java
package ch11_condition;
import java.util.Scanner;
public class Ex06_BasicSwitch {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
System.out.print("순위입력 : "); //엔터없이 문구 출력
int rank = scan.nextInt(); //순위를 정수로 입력받는 변수
switch(rank) {
case 1: //rank가 1과 같다면
System.out.println("금메달"); //금메달 출력
break; //rank가 1이면 아래 코드를 무시하고 switch문 벗어나라
case 2: //rank가 2와 같다면
System.out.println("은메달"); //은메달 출력
break; //rank가 2면 아래 코드를 무시하고 switch문 벗어나라
case 3: //rank가 3과 같다면
System.out.println("동메달"); //동메달 출력
break; //rank가 3이면 아래 코드를 무시하고 switch문 벗어나라
default: //rank가 1, 2, 3이 아니라면
System.out.println("노메달, 수고하셨습니다."); //문구 출력
break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
}
scan.close(); //스캐너 종료
}
}
- 코드에 주석으로 설명을 써놨으니 보시면 됩니다.
## 기본 switch문 결과1 - Ex06_BasicSwitch.java
2. switch 여러 case 처리
- 이번에는 여러 case에 실행하는 코드가 같을 때 처리하는 법을 보도록 하겠습니다.
1) switch 여러 case 문법
## 문법
switch(변수 혹은 식) {
case 값1: case 값2:
변수 혹은 식이 값1 혹은 값2와 맞는 경우 코드;
break;
case 값3: case 값4:
변수 혹은 식이 값3 혹은 값4와 맞는 경우 코드;
break;
default:
값1~4와 모두 맞지 않는 경우 코드;
break;
}
- 위의 case는 계속 추가될 수 있습니다.
- 한 경우에 꼭 2개만 적는 게 아니라 여러 개를 한 줄로 쭉 작성해도 됩니다.
- if문의 조건식에 논리합연산자(||)를 사용하는 것과 같습니다.
- default부분은 생략가능합니다.
2) switch 여러 case 문법 예제
- 그럼 여러 경우에 같은 코드를 쓰는 문제를 내보겠습니다.
사용자에게 주민번호 뒷자리의 첫글자를 입력받아,
1 혹은 3이면 [남자],
2 혹은 4면 [여자],
그외에는 [1~4사이 숫자로 입력하세요.]를
출력하는 프로그램을 만드시오.
## 여러 case / switch문 실습1 - Ex07_MultiCase.java
package ch11_condition;
import java.util.Scanner;
public class Ex07_MultiCase {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
System.out.print("주민번호뒷자리 첫글자입력(1~4) : "); //엔터없이 문구 출력
int first = scan.nextInt(); //첫글자를 담는 변수
switch(first) {
case 1: case 3: //first가 1 혹은 3과 같다면
System.out.println("남자"); //남자 출력
break; //first가 1 혹은 3이면 아래 코드를 무시하고 switch문 벗어나라
case 2: case 4: //first가 2 혹은 4와 같다면
System.out.println("여자"); //여자 출력
break; //first가 2 혹은 4면 아래 코드를 무시하고 switch문 벗어나라
default: //first가 1, 2, 3, 4가 아니라면
System.out.println("1~4사이 숫자로 입력하세요."); //문구 출력
break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
}
scan.close(); //스캐너 종료
}
}
- 코드에 주석으로 설명을 써놨으니 보시면 됩니다.
## 여러 case / switch문 결과1 - Ex07_MultiCase.java
- 결과가 잘 나오는 것을 확인할 수 있습니다.
- 그럼 위에 배운 내용을 모두 조합해서 문제를 낼 테니 풀어보고 접은 글을 열어 주세요.
사용자에게 월을 1~12사이로 입력받아,
1 / 3 / 5 / 7 / 8 / 10 / 12월이면 [마지막 날은 31일입니다.]
4 / 6 / 9 / 11 월이면 [마지막 날은 30일입니다.]
2 월이면 [마지막 날은 28일 혹은 29일입니다.]
나머지는 [1~12사이의 정수로 입력해주세요.]
라고 출력하는 프로그램을 만드시오.
## 문제 실습1 - Ex08_Question.java
package ch11_condition;
import java.util.Scanner;
public class Ex08_Question {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
System.out.print("월 입력(1~12) : "); //엔터없이 문구 출력
int month = scan.nextInt(); //월을 담는 변수
switch(month) {
//month가 1 / 3 / 5 / 7 / 8 / 10 / 12와 같다면
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
System.out.println("마지막 날은 31일입니다."); //문구 출력
break;
//month가 4 / 6 / 9 / 11과 같다면
case 4: case 6: case 9: case 11:
System.out.println("마지막 날은 30일입니다."); //문구 출력
break;
//month가 2와 같다면
case 2:
System.out.println("마지막 날은 28일 혹은 29일입니다."); //문구 출력
break;
default: //month가 1~12사이가 아니라면
System.out.println("1~12사이의 정수로 입력해주세요."); //문구 출력
break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
}
scan.close(); //스캐너 종료
}
}
- 설명은 주석으로 작성했으니 확인해 보세요.
- 결과도 [Ctrl]+[F11] 눌러서 1~13 사이 숫자를 눌러보면 잘 나오는 것을 확인할 수 있습니다.
'컴퓨터언어 > JAVA(자바)' 카테고리의 다른 글
[JAVA강좌] 18강 반복문 - for문 (0) | 2024.01.11 |
---|---|
[JAVA강좌] 17강 반복문 - while과 do while (0) | 2024.01.11 |
[JAVA강좌] 15강 조건문 if문 (0) | 2024.01.11 |
[JAVA강좌] 14강 비트연산자와 연산자우선순위 (0) | 2024.01.11 |
[JAVA강좌] 13강 삼항연산자(조건처리연산자) (0) | 2024.01.10 |