안녕하세요 한주현입니다.
오늘은 자바 프로그래밍 시 자주 보게되는 오류 중 하나인,
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 |
무슨일일까요?
해결 방법
문제는 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 에러가 발생한 원인과 해결방법에 대하여 알아봤습니다.
여러분들께 도움이 되셨음 좋겠습니다 ㅎㅎ.
다들 열공하시고!
그럼 다음 시간에 만나요!
'컴퓨터 > Java' 카테고리의 다른 글
[java] 문자열에서 정수형, double형으로 바꾸는 방법, 문자열에서 기본형으로 바꾸는 방법 - String to int, double (0) | 2017.12.30 |
---|---|
[java] 정수형에서 문자열로 변환 하는 두 가지 방법 - int to String (0) | 2017.12.30 |
[java] 현재 날짜, 시간 출력 - Date, SimpleDateFormat 클래스 (0) | 2017.12.25 |
[java] 배열 랜덤 섞는 방법 - [보너스!] 파이썬 리스트 랜덤 섞는 방법 (0) | 2017.12.24 |
[java] java.lang.ArrayIndexOutOfBoundsException 원인 및 해결방법 - 배열 정렬 및 최대값, 최소값 구하기 (0) | 2017.11.19 |
댓글