Burninghering's Blog
Published 2022. 1. 7. 01:04
1-13.JAVA 기초 - 조건문 switch-case JAVA

1. 조건이 여러 개 일 때 간단히 표현되는 switch-case 문

 

  • if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
  • 비교 조건이 특정 값이나 문자열인 경우 사용
  • break 문을 사용하여 각 조건이 만족되면 switch 블럭을 빠져나오도록 함
  • 자바 14부터 좀 더 간결해진 표현식이 지원 됨 ( break 사용하지 않음 )

1.1. 한 달이 며칠인지 알려주는 프로그램 구현

<java />
package ch16; import java.util.Scanner; public class SwitchCaseTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int month = scanner.nextInt(); int day; switch(month) { case 1: day=31; break; case 2: day=28; break; case 3: day=31; break; case 4: day=30; break; case 5: day=31; break; case 6: day=31; break; case 7: day=31; break; case 8: day=31; break; case 9: day=30; break; case 10: day=31; break; case 11: day=30; break; case 12: day=31; break; default: System.out.println("존재하지 않는 달입니다."); day=-1; } System.out.println(month+"월은 "+day+"일입니다."); } }

 

 

너무나 길다.......

줄여보자....

<java />
package ch16; import java.util.Scanner; public class SwitchCaseTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int month = scanner.nextInt(); int day; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: day = 28; break; default: System.out.println("존재하지 않는 달입니다."); day=-1; } System.out.println(month+"월은 "+day+"일입니다."); } }

 

2. 문자열 지원되는 switch - case 문

<java />
package ch16; public class SwitchCaseTest2 { public static void main(String[] args) { String medal = "Gold"; switch(medal) { case "Gold": System.out.println("금메달 입니다."); break; case "Silver": System.out.println("은메달 입니다."); break; case "Bronze": System.out.println("동메달 입니다."); break; default: System.out.println("메달이 없습니다."); break; } } }

 

3. Java 14 부터 지원 되는 Switch Expression

 

  • 간단하게 쉼표(,)로 조건 구분
  • 식으로 표현되기 때문에 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김
  • yield 키워드 사용 -> 반환값!
  • break문 안씀
<java />
package ch16; public class SwitchCaseUpTest { public static void main(String[] args) { int month = 3; int day = switch (month) { case 1, 3, 5, 7, 8, 10,12 -> { System.out.println("한 달은 31일입니다."); yield 31; } case 4,6,9,11 -> { System.out.println("한 달은 30일입니다."); yield 30; } case 2 ->{ System.out.println("한 달은 28일입니다."); yield 28; } default->{ System.out.println("존재하지 않는 달 입니다."); yield 0; } }; System.out.println(month + "월은 " + day + "일입니다."); } }

 

 

3.1. 다른 예제

<java />
package ch16; import java.util.Scanner; public class SwitchCaseTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int month = scanner.nextInt(); int day = switch(month) { case 1,3,5,7,8,10,12-> 31; case 4,6,9,11-> 30; case 2-> 28; default->{ //안에 문장이 두 개 이상 들어갈 때는, 중괄호 사용 System.out.println("존재하지 않는 달입니다."); yield -1; } }; //day가 문장이므로 세미콜론으로 끝내야 함 !!! 중요 System.out.println(month+"월은 "+day+"일입니다."); } }
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.