본문 바로가기
컴퓨터/Java

[java] missing return statement - 원인 및 해결방법

by HanJoohyun 2017. 12. 21.
반응형

 

 

 

안녕하세요 한주현입니다.

 

오늘은 자바 프로그래밍 시 자주 보게되는 오류 중 하나인,

 

missing return statement

 

의 원인 및 해결방법


에 대하여 알아보겠습니다.

 

 

  문제 상황

 

missing return statement

 

a, b 라는 변수에 담긴 두 수를 비교하여

 

그 중 큰 값을 출력하는 프로그램을 작성한다고 해봅시다.

 

프로그램을 작성하던 도중 a 가 항상 큰 상황인 경우만 생각하여

 

if 를 하나만 쓰고 a 를 return 하는 방식으로 코드를 작성해보죠 (10번 라인)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class GetMax{
  public static void main(String[] args){
    int a = 5;
    int b = 3;
    int result = max(a,b);
    System.out.println(result);
  }
 
  static int max(int a, int b){
    if(a > b){
      return a;
    }
  }
}
cs

 

 

a 의 값인 5가 나올것으로 기대하고 컴파일을 해보면 아래와 같이

 

missing return statement 오류가 납니다

 

1
2
3
4
GetMax.java:13: error: missing return statement
  }
  ^
1 error
cs

 

 

무슨일일까요?


 

 


  해결 방법

 

모든 상황을 cover할 수 있는 return 문 작성

 

 

문제는 b가 클 경우에 return 문이 선언 되어있지 않음에 있습니다.

 

우리는 눈으로 보았을 때 a 가 b 보다 크니 a가 큰 경우만 return문을 작성하고

 

결과값이 나오도록 기대하였지만,

 

java 컴파일러는 모든 경우수를 고려합니다.

 

그러므로 모든 경우에 대한 return 값을 가지도록 해보죠..

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class GetMax{
  public static void main(String[] args){
    int a = 5;
    int b = 3;
    int result = max(a,b);
    System.out.println(result);
  }
 
  static int max(int a, int b){
    if(a > b){
      return a;
    } else if(a < b) {
      return b;
    } else {
      return 0;
    }
  }
}
cs

 

 

 

모든 if - else if - else에 대하여

 

return 문을 작성하였습니다만 더 좋은 방식의 코드가 있습니다.

 

return 문을 여러개 작성하기 보다는

 

하나의 return을 가지는 편이 코드를 보았을 때 혼란스럽지 않습니다

 

그래서 if문에서는 결과를 변수에 넣고, 종료가 될 때 결과를 return 하는 식으로 코드를 수정해 보겠습니다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class GetMax{
  public static void main(String[] args){
    int a = 5;
    int b = 3;
    int result = max(a,b);
    System.out.println(result);
  }
 
  static int max(int a, int b){
    int result;
    if(a > b){
      result = a;
    } else if(a < b) {
      result = b;
    } else {
      result = 0;
    }
    return result;
  }
}
cs

 

\

라인 10번에서 결과를 담을 변수를 선언하고,

 

라인 12, 14, 16번에서 if문의 결과 값을 변수에 담았습니다.

 

그리고 라인 18번에서 결과를 한 번의 return으로 반환하였습니다.

 

 

이렇게 진행하니 깔끔하네요 ㅎㅎ

 


 

오늘은 java 프로그래밍에서 missing return statement 에러가 발생한 원인과 해결방법에 대하여 알아봤습니다.


여러분들께 도움이 되셨음 좋겠습니다 ㅎㅎ.


다들 열공하시고!


그럼 다음 시간에 만나요!

 

 

 


반응형

댓글