[java] 조건문 - Switch문
[표현법]
switch(아래에 기술할 값들과 동등비교를 할 대상자)
switch(정수, 문자, 문자열) {
case 값1 : 실행할 코드1; // 대상자 == 값1이 true일 경우 실행할 코드
break; // switch 영역을 빠져나간다.
case 값2 : 실행할 코드2; // 대상자 == 값2가 true일 경우 실행할 코드
break;
case 값n : 실행할 코드n; // 대상자 == 값n이 true일 경우 실행할 코드
break;
default : 실행할 코드; //조건식의 결과와 일치하는 case문이 없을 때 수행됨, 생략가능!
( == else블럭처럼)
}
-break; 빼먹지 말자!!! (스위치문을 완전히 빠져나가기 위해)
break문이 없을 경우, 위에서 아래로 코딩되는 순서대로 다음 case 값이 출력된다.
-switch문 ⇒ if문 으로 전환 : 언제든지 가능! 100%
-if문 ⇒ switch문 으로 전환 : 항상 가능하지 않다.(제약조건 때문에)
switch문의 조건식 결과가 정수, 문자, 문자열 이어야 하기 때문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
public void method1() {
//홀수 짝수 판별( 양수냐 음수냐는 판단하지 않겠다!)
Scanner sc = new Scanner(System.in);
System.out.println("정수 입력 : ");
int num = sc.nextInt();
int oddEven = num % 2; // 0 : 짝, 1 : 홀
switch(oddEven) {
case 0: System.out.println("짝수다");// oddEven == 0
break;
case 1: System.out.println("홀수다");// oddEven == 1
}
}
public void method2() {
// 양수다, 음수다, 0이다.
// 1. 사용자로부터 주민번호 입력받기 (String personId) => 000000 - 1234567
Scanner sc = new Scanner(System.in);
System.out.println("주민번호 입력(-포함) : ");
String personId = sc.nextLine();
// 2. 입력받은 주민번호로 부터 성별에 대핟ㅇ하는 문자 추출
char gender = personId.charAt(7);
// 3. 스위치문을 사용해서 조건문 작성
switch(gender) {
case '1' : System.out.println("남자입니다."); // gender == '1'
break;
case '2' : System.out.println("여자입니다."); // gender == '2'
break;
case '3' : System.out.println("남자입니다."); // gender == '3'
break;
case '4' : System.out.println("여자입니다."); // gender == '4'
break;
default : System.out.println("외계인입니다.");
// 뒤에 더이상 실행할 조건들이 없기 때문에 break;를 쓰지 않는다.
}
}
// 3번 스위치문 좀더 간결하게 코드 작성하는법!!
switch(gender) {
case '1' : // gender == '1', break;가 안걸려 있어서 바로밑 case 실행!!
case '3' : System.out.println("남자입니다."); // gender == '3'
break;
case '2' : // gender == '2'
case '4' : System.out.println("여자입니다."); // gender == '4'
break;
default : System.out.println("외계인입니다.");
// 뒤에 더이상 실행할 조건들이 없기 때문에 break;를 쓰지 않는다.
}
}
|
cs |
switch문에 return; 써보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
public void method3() {
// 사용자에게 구매할 과일 이름을 입력받아
// 각 과일마다의 가격을 출력해줄 것
// 샤인머스캣, 바나나, 메론, 수박, 귤
// 20000 4000 8000 5000 30000
// 우리집에 없어~ 딴집가~ 안팔아~
Scanner sc = new Scanner(System.in);
System.out.println("어서오세용~ 과일과게입니다~");
System.out.println("샤인머스캣, 바나나, 메론, 수박, 귤을 판매합니다!");
System.out.print("무엇을 구매하시겠어요? => ");
String fruit = sc.next();
int price = 0;
switch(fruit) {
case "샤인머스캣" : price = 20000;
break;
case "바나나" : price = 4000;
break;
case "메론" : price = 8000;
break;
case "수박" : price = 5000;
break;
case "귤" : price = 30000;
break;
default : System.out.println("우리집에 없어~ 딴집가~ 안팔아~");
return; // 현재 실행되고 있는 메소드 영역을 아예 빠져나간다.
// 메소드 호출 부분으로 돌아가다~
}
/*if(price != 0)*/System.out.printf("%s의 가격은 %d원 입니다.", fruit, price);
}// method3() //끝
|
cs |
switch문에 .equals써보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public void method4() {
// 로그인 기능
Scanner sc = new Scanner(System.in);
System.out.print("Id : ");
String userId = sc.nextLine();
System.out.print("Password : ");
String userPwd = sc.nextLine();
String id = "user01";
String pwd = "user12345";
if(userId.equals(id) && userPwd.equals(pwd)) {
System.out.println("로그인 성공 ~ 어서오고~ ");
}else {
//1. id가 일치하지 않았을 경우
//2. pw가 일치하지 않을 경우
if(!userId.equals(id)) {
System.out.println("id가 일치하지 않습니다.");
}else {
System.out.println("비밀번호가 일치하지 않습니다.");
}
}
|
cs |
1. 기본자료형 : boolean, char, short, int, long, float, double
=> 기본자료형 같은 경우에는 동등비교 시(==, !=) 비교가 잘 됨.
2. 참조자료형 : String
=> 동등비교(==, !=)가 불가능함
왜? 참조자료형의 경우 실제로 변수에 담기는 값이 '주소값'이기 때문.
문자열을 비교할때 : equals() 메소드를 사용한다. 결과는 => true, false
[표현법] 문자열.equals(비교할대상)