Java

[Java/자바]제어문(2)_ switch 조건문

둥구는 지굴다 2022. 9. 21. 18:22

안녕하세요! 저번 포스팅에서는 제어문 중의 한 종류인 if문에 대해 알아보았는데요.

이번 포스팅에는 제어문에서 또 다른 종류인 switch조건문에 대해 다루어 보겠습니다.

switch문이란?

switch문은 이 case는 이렇게 처리할게~!라는 의미를 갖고 있습니다.

switch문의 구조

switch(변수) 식이 올 수 있으니, 대체로 변수를 사용{

		case 값1:
		
        변수 == 값1 일때 실행할 명령;
		break;
		case 값2:
		변수 == 값2 일때 실행할 명령;
		break;
		...
				
		default:
		모든 case에 해당하지 않을 때 실행할 명령
        }

switch문 예시_1

public class Switch_Traffic {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		System.out.println("☆★☆★☆★신호등 프로그램☆★☆★☆★");
		System.out.println("빨간불:1, 노란불:2 , 초록불:3");
		System.out.println("신호를 입력해 주세요:");
		int sign=sc.nextInt();
		
		switch(sign) {
		case 1:
			System.out.println("빨간불입니다. 정지하세요");
			break;
		
		case 2:
			System.out.println("노란불입니다. break밟으세요");
			break;
		case 3:
			System.out.println("초록불입니다. 출발하세요");
			break;
		default:
			System.out.println("잘못 누르셨습니다.");
		}

	}

}

신호등 프로그램을 만들어 봤어요!!

1.Scanner를 이용해서 사용자에게 정수를 입력받을 거예요.

  입력받은 정수는 sign이라는 정수형태인 변수에 들어가게 만들어져 있네요.

Scanner sc= new Scanner(System.in);
		System.out.println("☆★☆★☆★신호등 프로그램☆★☆★☆★");
		System.out.println("빨간불:1, 노란불:2 , 초록불:3");
		System.out.println("신호를 입력해 주세요:");
		int sign=sc.nextInt();

2.switch문을 만들었어요! switch( ) 안에 있는 괄호에는 변수를 넣어줄 거예요. 이렇게 되면 switch는 sign이라는 변수를 검사하겠죠 밑에 있는 case 수와 sign에 입력한 변수를 비교하게 됩니다.

switch(sign) {
		case 1:
			System.out.println("빨간불입니다. 정지하세요");
			break;
		
		case 2:
			System.out.println("노란불입니다. break밟으세요");
			break;
		case 3:
			System.out.println("초록불입니다. 출발하세요");
			break;
		default:
			System.out.println("잘못 누르셨습니다.");
		}

따라서 sign의 변수가 1이라면 case 1의 실행문 즉,

System.out.println("빨간불입니다. 정지하세요"); break; => 이 실행문이 실행되게 됩니다.

마찬가지로 case 2, case 3 다 값을 비교한 뒤 sign변수와 같지 않다면 실행되고 같다면 실행문이 실행됩니다.

참고로 break문은 정지 역할을 합니다 break; 가 없다면 알맞은 case문을 실행한 뒤 밑에의 실행문들이 맞든 안 맞든 실행을 하게 됩니다. 따라서 사용자의 사용목적에 따라 다르지만 저는 거의 break;를 쓰는 것 같아요!!

default는 설정한 case 값에 모두 해당되지 않을 경우 실행되는 실행문이 실행됩니다.

따라서 입력한 값이 1,2,3이 아닌 값을 입력하면 default 값이 나오게 되겠지요.

자 그럼 출력한 값 봐볼게요!

출력 결과

1 입력했을 때 결과창

2 입력했을 때 결과창

3 입력했을 때 결과창

1,2,3이 아닌 다른 숫자 입력했을 때 결과창

출력 결과를 보니 이해되셨을까요? ㅎㅎ..

다음 예시 봐볼게요!!

switch문 예시_2

public class Switch_Pokemon {

	public static void main(String[] args) {
		Random random= new Random();
		System.out.println("★☆★☆Random Choosing Pokemon★☆★☆");
		System.out.println("1.피카츄: 전기괴물");
		System.out.println("2.꼬부기: 물괴물");
		System.out.println("3.이상해씨:풀괴물");
		int mypokemon=random.nextInt(3)+1; //0~2 내가 적은 숫자 -1 이기때문에 
                                           //+1을 적어주어 1~3까지 의 값을 넣어준다.
		System.out.println("선택된번호"+mypokemon);//Random은 실행 할때마다 Random의 값을 넣어준다.
		switch(mypokemon) {
		case 1:
			System.out.println("피카츄 선택! 백만볼트!!!!");
			break;
		case 2:
			System.out.println("꼬부기 선택! 물대포!!!");
			break;
		case 3:
			System.out.println("이상해씨 선택! 덩쿨채찍!!!");
			break;
			
		}
	}

}

코드를 설명하기 전에 프로그램을 먼저 설명하자면

세 가지의 포켓몬스터를 설명하는 멘트를 작성한 뒤 

그 세가지의 포켓몬중 랜덤으로 mypokemon변수 안에 정수가 입력됩니다.

이때 random 클래스를 사용해 볼 것입니다.

그리고 그 랜덤으로 선택된 포켓몬에 맞는 case를 찾아가 실행문을 실행합니다.

우선 Random클래스에 대해 먼저 알아보시죠

Random클래스

Random클래스는 이름에서 유추할 수 있듯이 랜덤으로 숫자를 선택해 주는 기능을 포함한 클래스입니다.

  • Random ( ): 랜덤 클래스 객체 생성
  • nextInt( ) : 정수 값의 난수를 발생
  • nextInt( 숫자 ): 0~숫자 -1 한 값까지의 정수 값의 난수를 발생
  • nextFloat ( ) : 0.00~ 1.0까지의 실수형인 난수를 발생

코드 설명

1. Random random= new Random( ); => random이라는 Random 객체를 생성

    사용자에게 보일 멘트를 설정해 줍니다.

    int mypokemon=random.nextInt(3)+1; => mypokemon이라는 변수에 random으로 0~3의 값을 넣어줍니다.

                                                                      +1을 해준 이유는 3만 적으면 0~2의 값을 랜덤으로 넣습니다. 따라서 +1을 해                                                                        줌으로 서 1~3의 값을 랜덤으로 변수에 넣어줍니다. 

Random random= new Random();
		System.out.println("★☆★☆Random Choosing Pokemon★☆★☆");
		System.out.println("1.피카츄: 전기괴물");
		System.out.println("2.꼬부기: 물괴물");
		System.out.println("3.이상해씨:풀괴물");
		int mypokemon=random.nextInt(3)+1; //0~2 내가 적은 숫자 -1 이기때문에 
       					//+1을 적어주어 1~3까지 의 값을 넣어준다.

 

2. 선택된 번호를 출력하고 switch문을 작성하여 랜덤으로 들어간 숫자를 비교해 알맞은 case문을 실행합니다.

System.out.println("선택된번호"+mypokemon); //Random은 실행 할때마다 Random의 값을 넣어준다.
		switch(mypokemon) {
		case 1:
			System.out.println("피카츄 선택! 백만볼트!!!!");
			break;
		case 2:
			System.out.println("꼬부기 선택! 물대포!!!");
			break;
		case 3:
			System.out.println("이상해씨 선택! 덩쿨채찍!!!");
			break;
			
		}
	}

출력 결과

랜덤 값으로 1이 선택되었네요 따라서 case1의 실행문인 피카츄가 실행되었습니다.

이상으로 오늘은 조건 문중의 하나인 switch문에 대하여 알아보았는데요

다음 포스팅에서는 반복문에 대하여 알아보겠습니다.

이상 글 읽어주셔서 감사합니다!!