[23/04/24] Unreachable code 에러

yeju·2023년 4월 25일

에러노트

목록 보기
2/2

메서드 작성 과정에서 발생한 에러 노트

🙏 내가 원했던 결과

숫자 3,4,5 입력 시 "봄" 반환,
숫자 6,7,8 입력 시 "여름" 반환,
...

int 타입의 인자(월)을 입력받아 문자열(계절)로 반환하는 메서드를 작성했다. switch문을 메서드 안에 사용해보고 싶어서 if가 아닌 switch문을 썼는데...

Unreachable code 에러 발생
원래 switch문을 사용하던 대로 실행을 멈추고 싶은 부분에 break문을 사용했는데 해당 줄에서 Unreachable code라는 에러가 발생했다.
이 에러는 구조상 도달할 수 없는 코드가 있을 때 발생하는데, return이 실행된 후 이미 해당 메서드는 값을 반환하고 종료된 상황이기 때문에 break문을 쓸 필요가 없는 것이었다..
return하지 않는 메서드에서만 break문으로 빠져나오면 되는 듯

📗 메서드 내에서 return이 실행되면
뒤에 코드가 더 있더라도 실행하지 않고 값을 반환한 뒤 종료한다.

해결 방법
break문을 지워 주니 깔끔하게 돌아간다.
숫자를 입력해서 문자열을 반환하는 메서드를 작성해 보고 싶었는데 성공했다^_^

📄 전체 코드

package chapter06;
import java.util.Scanner;
public class ch06_5 {

	static void hello(String name) {
		System.out.printf("안녕하세요, %s님!%n",name);
	}
	
	static int age(int year) {
		return 2023-year;
	}
	static String season(int month) {
		switch(month) {
			case 3:case 4:case 5:
			return "봄";
			case 6:case 7:case 8:
			return "여름";
			case 9:case 10:case 11:
			return "가을";
			case 12:case 1:case 2:
			return "겨울";
			default:
			return "";
		}
	}
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		Scanner ss = new Scanner(System.in);
		
		System.out.println("이름을 입력하세요.");
		String name = ss.nextLine();
		hello(name);
		
		System.out.println("출생년도를 입력하세요. (ex.1996)");
		int year = sc.nextInt();
		int age = age(year);
		
		System.out.println("태어난 달을 입력하세요.");
		int month = sc.nextInt();
		String season = "";
		season = season(month);
		
		System.out.printf("%s님의 나이는 %d세이고, 태어난 계절은 %s입니다.",name,age,season);
		
	}

}
profile
🌱

0개의 댓글