입력으로 사용자가 입력을 받을수 있다고 했었습니다. (Scanner 클래스와 메소드 사용)
2021.07.22 - [프로그래밍 공부/Java] - [lesson] Java 프로그래밍 언어 - 입력 클래스와 입력 메소드
그렇다면 1~3까지 입력을 받고 그것들을 어떻게 구분 할 수 있을까요?
예상하시는 방법 중 괜찮은 방법이 있다면 이전에 배운 if문 즉 조건문 일 것입니다.
바로 아래처럼 쓰는것이죠
2021.07.25 - [프로그래밍 공부/Java] - [lesson] Java 프로그래밍 언어 - 조건식
Scanner sc = new Scanner(System.in);
System.out.println("1~3중 원하는 숫자를 입력해 주세요");
int num = sc.nextInt();
if(num == 1) {
System.out.println("1을 입력했을 때");
}else if(num == 2) {
System.out.println("2를 입력했을 때");
}else if(num == 3) {
System.out.println("3을 입력했을 때");
}else {
System.out.println("1~3이 아닌 다른것이 들어 왔을 때");
}
//1~3중 원하는 숫자를 입력해 주세요
//2 입력
//2를 입력했을 때
그런데 이렇게 쓰면 숫자마다 또는 입력마다 다 if문을 사용해야 하는데 번거롭다고 느껴지지 않나요?
그럴때 쓰는것이 바로 switch문입니다.
그럼 스위치 문법은 아래와 같습니다.
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
...
default: ...
break;
}
문법만 봤을때는 생소할수 있지만 아래의 예시를 보면 아! 이거구나 싶어요~
Scanner sc = new Scanner(System.in);
// 일반 예제
System.out.println("1~3중 원하는 숫자를 입력해 주세요");
switch(sc.nextInt()) {
case 1:
System.out.println("1을 입력 했을 때");
break;
case 2:
System.out.println("2를 입력 했을 때");
break;
case 3:
System.out.println("3을 입력 했을 때");
break;
default :
System.out.println("위의 조건이 아닌 나머지를 입력 했을 때");
break;
}
// 숫자만이 아닌 다른 입력값도 구분이 된다는 예제
System.out.println("a 또는 s를 입력하세요");
switch(sc.nextLine()) {
case "s" :
System.out.println("s를 입력 했을 때");
break;
case "a" :
System.out.println("a를 입력 했을 때");
break;
default :
break;
}
★Point!
1. 기본문법에서 break를 사용하지 않으면 그 다음의 case로 넘어가니 꼭 하나의 케이스에서 끝내기 위해 break를 사용할것!
(다만 반대로 case10 : case 9 : case 8 :로 사용하여 10~8까지 입력했을때 하나의 기능을 작동하게 만들수도 있습니다.)
2. 숫자만이 아닌 문자, 문자열 등 입력한 값들로 case를 구분할 수 있습니다.
이 switch문은 입력된 값을 구분할때 반복문(if - else)보다 가독성이 좋습니다. 그러나 if로도 만들수 있기 때문에 사용하는 것에서는 작성자의 선택으로 정해지지만 switch문을 작성하고 if문으로 변경하려고 하면 용이하지만, if문부터 쓰면 바꾸기 어려우니 이점 참고하여 사용하면 좋을 것 같습니다.
'프로그래밍 공부 > Java' 카테고리의 다른 글
[lesson] Java 프로그래밍 언어 - 배열 (0) | 2021.07.26 |
---|---|
[lesson] Java 프로그래밍 언어 - 반복문, 기타 제어문 (0) | 2021.07.26 |
[lesson] Java 프로그래밍 언어 - 조건식 (0) | 2021.07.25 |
[lesson] Java 프로그래밍 언어 - 연산자 (0) | 2021.07.22 |
[lesson] Java 프로그래밍 언어 - 입력 클래스와 입력 메소드 (0) | 2021.07.22 |