1.8.1: 프로그램의 흐름 제어를 위한 Switch 문 사용
Switch 문은 Java 언어에서 제공되는 다섯 가지 제어 흐름 문 중 하나로, 여러 실행 경로를 허용합니다. 선택자 변수의 값을 사용하여 실행될 경로를 선택합니다.
선택자 변수의 타입 선택
선택자 변수의 타입은 다음과 같은 유형 중 하나로 선택해야 합니다:
byte, short, char, int 기본 데이터 타입
Character, Byte, Short, Integer 래퍼 타입
열거형 타입
String 타입
주의할 점은 boolean, long, float, double 기본 타입은 선택자 변수의 타입으로 사용할 수 없다는 것입니다.
Switch 문 기본 구조 및 예시
다음은 Switch 문을 사용한 간단한 예제입니다:
import java.util.Scanner;
public class SeasonDeterminer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("월을 입력하세요 (1-12): ");
int month = scanner.nextInt();
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "겨울";
break;
case 3:
case 4:
case 5:
season = "봄";
break;
case 6:
case 7:
case 8:
season = "여름";
break;
case 9:
case 10:
case 11:
season = "가을";
break;
default:
season = "유효하지 않은 월입니다.";
}
System.out.println(month + "월은 " + season + "입니다.");
}
}
Scanner
클래스를 사용하여 콘솔에서 사용자 입력을 받습니다.- Switch 문에서 여러 케이스를 하나의 블록으로 그룹화하여 코드 중복을 줄입니다.
- 각 계절에 대해 동일한 결과를 반환하므로, 여러 케이스(case)를 한 번에 처리합니다.
- 유효하지 않은 월 입력에 대한 처리를 default로 구현합니다.
Fall-through 사용
Switch 문에서 break를 생략하면 Fall-through 현상이 발생합니다. 이는 여러 case가 동일한 코드 블록을 공유할 때 유용할 수 있습니다. 다음은 Fall-through를 사용한 예제입니다:
int month = 8;
List<String> futureMonths = new ArrayList<>();
switch (month) {
case 1: futureMonths.add("1월");
case 2: futureMonths.add("2월");
case 3: futureMonths.add("3월");
case 4: futureMonths.add("4월");
case 5: futureMonths.add("5월");
case 6: futureMonths.add("6월");
case 7: futureMonths.add("7월");
case 8: futureMonths.add("8월");
case 9: futureMonths.add("9월");
case 10: futureMonths.add("10월");
case 11: futureMonths.add("11월");
case 12: futureMonths.add("12월");
break;
default: break;
}
System.out.println(futureMonths); // 출력: [8월, 9월, 10월, 11월, 12월]
이 예제에서 break를 생략하여 입력된 월 이후의 모든 월을 리스트에 추가합니다.
여러 case 레이블 사용
한 문장에 여러 case 레이블을 사용할 수 있습니다. 이는 코드 중복을 줄이고 가독성을 높이는 데 유용합니다. 다음은 여러 case 레이블을 사용한 예제입니다:
import java.util.Scanner;
public class GradeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("학점을 입력하세요 (0-100): ");
int score = scanner.nextInt();
String grade;
switch (score / 10) {
case 9: case 10:
grade = "A";
break;
case 8:
grade = "B";
break;
case 7:
grade = "C";
break;
case 6:
grade = "D";
break;
default:
grade = "F";
}
System.out.println(score + "점은 " + grade + "학점입니다.");
}
}
Scanner
클래스를 사용하여 콘솔에서 사용자 입력을 받습니다.- Switch 문에서
score / 10
을 사용하여 10점 단위로 그룹화합니다. - 여러 케이스를 하나의 블록으로 그룹화하여 코드 중복을 줄입니다.
- 유효하지 않은 점수 입력에 대한 처리를 default로 구현합니다.
Switch 문 사용 시 주의사항
- Fall-through: 의도치 않게 다음 case로 넘어갈 수 있으므로, 각 case 끝에 break를 사용하는 것이 좋습니다.
- 타입 호환성: Switch 문의 표현식과 case 값은 같은 타입이어야 하거나 자동 변환이 가능해야 합니다.
- 상수만 사용: case 레이블에는 상수 표현식만 사용할 수 있습니다. 변수나 메소드 호출은 허용되지 않습니다.
- 중복된 case: 동일한 값에 대한 중복된 case는 컴파일 오류를 발생시킵니다.
편히 모아진 글 보시려면 아래 위키독스 링크 >>
https://wikidocs.net/book/17111
'JAVA' 카테고리의 다른 글
JAVA: Case에 String 타입 사용, Null 선택자 변수[코딩백과 with JAVA] (0) | 2024.12.22 |
---|---|
JAVA: Switch문과 If-then-else 선택 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA 제어문 - for 문 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA while 문 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA 제어문 if-then, if-then-else[코딩백과 with JAVA] (0) | 2024.12.22 |