본문 바로가기

Java/실습

[Java] 중복 case의 경우 (switch - case문)

switch - case문을 통해

 

월을 입력받아서

 

월이 31일까지 있는지 / 30일까지 있는지 혹은 28일까지 있는지를 출력하려고 합니다.

 

이 떄 저는 월마다 case를 설정해서 출력했습니다.

 

import java.util.Scanner;

 

public class CMain1 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("월을 입력하세요.");

int month = sc.nextInt();

switch (month) {

case 1:

System.out.println("31일까지 있습니다.");

break;

case 2:

System.out.println("28일까지 있습니다.");

break;

case 3:

System.out.println("31일까지 있습니다.");

break;

case 4:

System.out.println("30일까지 있습니다.");

break;

case 5:

System.out.println("31일까지 있습니다.");

break;

case 6:

System.out.println("30일까지 있습니다.");

break;

case 7:

System.out.println("31일까지 있습니다.");

break;

case 8:

System.out.println("31일까지 있습니다.");

break;

case 9:

System.out.println("30일까지 있습니다.");

break;

case 10:

System.out.println("31일까지 있습니다.");

break;

case 11:

System.out.println("30일까지 있습니다.");

break;

case 12:

System.out.println("31일까지 있습니다.");

break;

default:

System.out.println("없는 달입니다.");

break;

}

}

}

 

제가 출력한 코드입니다.

 

하지만 case의 실행문이

 

중복일 경우 아래처럼

 

case를 붙여서 표기해서

 

해당 case에 맞는 내용을 실행할 수 있습니다.

 

import java.util.Scanner;

 

public class CMain1 {

public static void main(String[] args) {

//1년 12달

//각 달마다 며칠인지 다릅니다.

// 몇 월인지 입력을 받아서

//31일까지 있습니다./30일/28일

//14월 => 없는 달입니다.

Scanner sc = new Scanner(System.in);

System.out.println("월을 입력하세요.");

int month = sc.nextInt();

switch (month) {

case 1: case 3: case 5: case 8: case 10: case 12:

System.out.printf("%d월은 31일까지 있습니다.\n",month);

break;

case 4: case 6: case 9: case 11:

System.out.printf("%d월은 31일까지 있습니다.\n",month);

break;

default:

System.out.println("없는 달입니다.");

break;

}

}

}

 

 

출력 내용

 

 

저도 코딩을 하면서 

 

이렇게 복사 붙여넣기 하는 식으로

 

노가다해서 구현하는게 맞을까?

 

라는 생각이 들었지만 

 

역시 방법이 있었습니다.

 

위처럼 case를 붙여서 사용하거나 

 

조건문을 사용해도 코드를 줄일 수 있을 것 같습니다.

 

감사합니다!