작성
·
43
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요! <김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 - 섹션 9. 메서드 - 반환 타입> 강의를 듣다가 MethodReturn1 코드 관련해 궁금한 점이 생겨서 글을 올리게 되었습니다!
아래의 코드처럼 변수 i에 홀수를 넣어 if문의 조건식을 만족하면
true값을 반환하여 result = true로 출력되지 않을까하는 예상과는 다르게,
odd 메서드의 끝 블록(}) 부분에 missing return statement라는 오류가 발생했다고 뜹니다!
아래처럼 조건식을 만족하여 return문을 수행해도, if문같은 경우에는 if문 바깥에도 return문을 사용해야 하나요??
package method;
public class MethodReturn1 {
public static void main(String[] args) {
boolean result = odd(3);
System.out.println(result);
}
public static boolean odd(int i) {
if (i % 2 == 1) {
return true;
}
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
heyen0205님, 질문하신 MethodReturn1 코드 관련 오류에 대해 답변드립니다.
Java에서 메서드는 선언된 반환 타입에 맞는 값을 모든 경우에 대해 반환해야 합니다. odd
메서드에서는 반환 타입으로 boolean
을 명시하셨으니, 모든 실행 경로에서 boolean
값이 반환되어야 합니다.
주신 코드를 보면, if
문의 조건이 만족할 때는 true
를 반환하지만, 만약 i % 2 == 1
이 false
인 경우 즉, i
가 짝수일 경우에는 함수에서 반환할 값을 정의하지 않았습니다. 이로 인해 컴파일러가 missing return statement
오류를 발생시키는 것입니다.
해결하기 위해서는 if
문 바깥에 모든 조건에서 반환될 수 있는 return
문을 추가해야 합니다. 예를 들어, 홀수일 때는 true
를, 그렇지 않을 때는 false
를 반환하도록 코드를 수정할 수 있습니다. 아래는 수정된 코드 예시입니다:
public static boolean odd(int i) {
if (i % 2 == 1) {
return true;
}
return false; // 홀수가 아닐 경우 false 반환
}
위와 같이 return false;
를 추가함으로써 모든 조건에서 boolean
값이 반환되도록 한 것입니다. 이렇게 하면 모든 실행 경로에서 반환 타입에 맞는 값이 반환되어 위와 같은 오류가 해결됩니다.
자바에서의 메서드는 모든 경우에 대해 반환 타입에 따른 값을 반환해야 해서 if문 바깥에도 반환할 값을 정의한 거였군요!
덕분에 궁금증이 해결됐습니다!!! 자세하게 설명해주셔서 감사드립니다!!!!!