JAVA - switch 문(2022-07-12)

2022. 7. 12. 20:183층 1구역 - 개발의 장/JAVA

if-else 할 때 까진 할만했었는데 스위치 문 들어오니 묘하게 복잡하다........

퀴즈들 정답코드 최대한 보지 않고 스스로 작성하여 이상없이 출력할 수 있도록 

한번씩 계속 작성해봐야겠다...

 

스위치문 본격적으로 시작하기 전에...

필자가 퀴즈를 풀면서 스캐너를 실행할 때,

정수형 int 변수를 사용하여 nextint();로 많이 사용했었다.

 

그렇다면 이걸 문자형으로는 사용 못하는가?

가능하다.

 

어떤 게임의 메인메뉴를 만든다고 생각하고 예제를 보자.

package conditions_0712;

import java.util.Scanner;
public class Ex10 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String data;
		
		System.out.println("1.쉬운 게임");
		System.out.println("2.어려운 게임");
		System.out.println("3.나가기");
		System.out.print(">>> ");
		data = input.next();
		if (data.equals("1"))
			System.out.println("쉬운 게임 시작");
		
		if (data.equals("2"))
			System.out.println("어려운 게임 시작");
		
		if (data.equals("3"))
			System.out.println("종료 합니다.");
	}
}

 

Scanner input으로 String에 data변수 정의, data변수에 input.next(); 저장

여기서 차이점은 int일 경우 nextint();를 사용했지만 여기선 문자열 이므로 next();를 사용했다.

 

1. Switch문?

Switch문은 if-else의 다른 버전 이라고 생각하면 쉽다.

switch를 선언하고 몇 개의 case를 준 뒤 해당 값이 case(if 나 else if)문장에 맞으면 break; Switch문을 깨고 출력

해당이 없으면 default(else)문으로 출력

 

예제

package conditions_0712;

import java.util.Scanner;

public class Ex11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.print("수 입력 : ");
		int select = sc.nextInt();

		switch (select) {
			case 1:	System.out.println("case 1 : " + select); break;
			case 2:	System.out.println("case 2 : " + select); break;
			case 3:	System.out.println("case 3 : " + select); break;
			default:System.out.println("default : 1,2,3이 아닌 수");
		}

		System.out.println("다음 문장");

	}

}

결과

1을 입력했을 때, case 1번 문으로 들어가 해당 출력을 실행하고 break;

2를 입력했을 때, case 2번 문으로 들어가 해당 출력을 실행하고 break;

3을 입력했을 때, case 3번 문으로 들어가 해당 출력을 실행하고 break;

1,2,3이 아니면 dfault로 들어가 출력 실행