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를 붙여서 사용하거나
조건문을 사용해도 코드를 줄일 수 있을 것 같습니다.
감사합니다!
'Java > 실습' 카테고리의 다른 글
[Java] 양수 or 음수 / 배수인지 (조건문 예제) (0) | 2024.11.27 |
---|---|
[Java] 점수에 따라서 학점 부여하기(switch - case 문) (0) | 2024.11.27 |
[Java] 덧셈의 결과가 짝수면 출력 - 재귀 함수 (0) | 2024.11.26 |
[Java] 각 자릿수의 숫자를 더한 값 구하기 (0) | 2024.11.26 |
[Java] 피보나치 수열 (0) | 2024.11.26 |