BackEnd/JAVA

[JAVA] switch/case 문을 이용해 점심 메뉴 고르기 (feat. 랜덤함수 )

뚜벅-뚜벅 2020. 11. 12. 14:22

자바 수업을 듣다가 배가 고파졌습니다

마침 if/else, switch/case/break 문을 배우고 있어

미리 골라놓은 서강대 근처 혼밥 맛집 리스트를 이용하여 응용해보기로 했습니다.

 

 

switch문은 정수값을 받아 그에 해당하는 case 이하의 명령을 실행합니다.

// Example
int n=1;
 switch(n){
   case 0: 
      System.out.println('0');
   case 1:
      System.out.println('1'); 
   case 2:
      System.out.println('2');
} 

이 경우 n의 값이 1이므로 case1, case2 가 실행됩니다.

case 1만 실행하고 싶다면 case 1의 명령문 밑에 break; 를 삽입합니다.

변수당 한가지 명령만 실행하고 싶다면 break 문을 하나씩 다 넣습니다. 

 

이러한 기능을 활용해 랜덤 점심 뽑기 프로그램을 작성해보겠습니다.

 

 

먼저 이클립스에서 랜덤함수를 불러옵니다. 

Random 변수명 = new Random; 객체를 생성하고

객체.nextInt(숫자); 를 해주면 숫자만큼의 경우의 수 중 하나의 정수 랜덤값을 반환합니다

 

 * 궁금증. 랜덤함수 반환값은 int만 되나요? 실수형도 되는지?

Random randNum = new Random();
		int menu;
		menu = randNum.nextInt(15)+1; //0~14의 정수가 반환되기 때문에 +1
		System.out.println("랜덤값: " + menu);

랜덤값에 맞는 메뉴가 제대로 출력되는지 보기위해 menu 값도 출력해줍니다.

저는 막판 뒤집기의 짜릿함을 위해 랜덤 값에 +1을 해주었지만, 그런 과정없이 case 0 부터 써도 됩니다.

 

이제 switch 구문으로 본격적인 메뉴를 구성합니다.

하나의 결과값만 얻고싶다면 각 케이스마다 break문을 삽입해야합니다.

그렇지 않으면 점심메뉴를 여러 개 추천받는 불상사(;;)가 생길 수 있습니다.

switch (menu) {

		case 1:
			System.out.println("고유식당");
			break;
		case 2:
			System.out.println("벌떼식당");
			break;
		case 3:
			System.out.println("뜸들이다");
			break;
		case 4:
			System.out.println("KFC");
			break;
		case 5:
			System.out.println("신촌설렁탕");
			break;
		case 6:
			System.out.println("별당김치찜");
			break;
		case 7:
			System.out.println("마포식당쌈밥");
			break;
		case 8:
			System.out.println("홍원");
			break;
		case 9:
			System.out.println("큰맘할매순대국");
			break;
		case 10:
			System.out.println("써브웨이");
			break;
		case 11:
			System.out.println("KD케밥하우스");
			break;
		case 12:
			System.out.println("소구장 떡볶이");
			break;
		case 13:
			System.out.println("돈부리모노");
			break;
		case 14:
			System.out.println("서강촌뜨기");
			break;
		case 15:
			System.out.println("편의점/한솥");
			break;
		}

어쩌다보니 신촌 혼밥집을 열 다섯개나 찾았습니다.

 

클래스를 실행하면

 

적적해서 인삿말도 출력했습니다.

 

이렇게 단호한 점심메뉴 추천 결과가 나타납니다.

 

switch 구문은 특정한 규칙이 없거나, 혹은 너무 많은 조건이 있을 때 else/if 대신 유용한 것 같습니다.

break; 와도 짝꿍이라는 점 기억하면 좋을 것 같습니다.

 

점심은 써브웨이를 먹으러 가겠습니다.