2014-04-22 5 views
-1
import java.util.Scanner; 

public class Main { 

public static String doStuff(int num){ 
    //your code here 
    for(int i = 1; i < 5; i++){ 
     if(i == num){ 
      String str = String.valueOf(i); 
      return str; 
     } 
     else if(i > 4){ 
      return "too large"; 

     } 
     else if(i < 1){ 
      return "too small"; 
     } 
    } 

} 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 

    int n = in.nextInt(); 
    for(int i=0; i<n; i++){ 
     int a = in.nextInt(); 
     System.out.println(doStuff(a)); 
    } 
} 

}누락 return 문 오류

이 코드를 실행하면, 나는 다음과 같은 오류 얻을 :이 문제를 해결하기 위해해야 ​​할 방법

Main.java:21: error: missing return statement 
} 
^ 
1 error 

를?

아래 조건을 참조하십시오. 1에서 4까지의 숫자가 있으면 해당 숫자의 단어 표현을 반환하십시오. 예를 들어, 2를 반환하면 2를 반환합니다. 숫자가 4보다 크면 구문을 너무 크게 되돌립니다. 숫자가 1보다 작 으면 구를 너무 작게 반환하십시오.

+1

컴파일러는 if 블록이 모든 가능성을 다루지는 못한다고 불평하고 있습니다. 메서드의 마지막 부분에 최종 'else'블록을 추가하거나 기본 반환 값을 가져야합니다. –

+0

라인 21은 어느 라인입니까? – Raedwald

+0

고맙습니다. else if (i <1) { return "too small"; } } ← 거의 여기 – Bill

답변

4

doStuff() 메서드의 모든 return 문은 조건부 return 문 (if-else 또는 for 루프 내에 있음)입니다. 메서드의 마지막에 기본값 return이 있어야하므로 조건 블록이 실행되지 않는 경우 메서드에서 결과를 반환합니다.

public static String doStuff(int num){ 
    //your code here 
    for(int i = 1; i < 5; i++){ 
     if(i == num){ 
      String str = String.valueOf(i); 
      return str; 
     } 
     else if(i > 4){ 
      return "too large"; 

     } 
     else if(i < 1){ 
      return "too small"; 
     } 
    } 
    return null; // default return in case none of the if-else blocks are executed. 
} 
0

for 루프 내에서 값을 반환합니다. 기본값을 반환해야합니다.

public static String doStuff(int num){ 
    //your code here 
    for(int i = 1; i < 5; i++){ 
     if(i == num){ 
      String str = String.valueOf(i); 
      return str; 
     } 
     else if(i > 4){ 
      return "too large"; 

     } 
     else if(i < 1){ 
      return "too small"; 
     } 
    } 
    return "default"; 
}