2016-06-26 5 views
-6

끝에 return 문이 필요하지 않습니다. 하지만 그렇지 않으면 컴파일되지 않습니다.어떻게 RETURN 문을 제거 할 수 있습니까?

public class Word2 { 

    private String word; 

    public Word2(String word) { 
     this.word = word; 
    } 

    public String getSubstrings() { 
     for(int i=0; i<word.length(); i++) { 
      System.out.println(word.substring(0,i+1)); 
     } 

     return null; 
    } 
} 
+0

'public void getSubstrings()' – Eran

+0

뭔가 묻기 전에 약간의 조사를 해보는 것이 좋습니다. :) –

답변

1

귀하의 getSubstrings 방법으로 수행하려는 작업에 따라 다릅니다. String을 반환한다고 선언했지만 실제로는 귀하의 의도가 아닙니다.

일반적으로 Java 메소드에서 getX 메소드는 객체에 대해 X 속성 또는 객체 속성에서 계산 된 값을 반환합니다. 여기에서 getSubstringsList<String>을 반환 할 것으로 예상됩니다.이 경우 하위 메서드 목록에서 새 List<String>을 만들고 대신 해당 목록에 하위 문자열을 추가 한 다음 목록을 반환합니다.

public List<String> getSubstrings() { 
    List<String> substrings = new ArrayList<>(); 
    for(int i=0; i<word.length(); i++) 
    { 
     substrings.add(word.substring(0,i+1)); 
    } 
    return substrings; 
} 

대신, 당신은 실제로 System.out에 문자열을 인쇄하려면, 다음 printSubstrings처럼 방법을 더 설명하는 이름을 제공해야하며, 그렇지 않을 것을 선언 할 것이다, 그것을 void 반환 유형을 제공 메소드에서 아무 것도 반환하지 않습니다.

public void printSubstrings() 
{ 

    for(int i=0; i<word.length(); i++) 
    { 
     System.out.println(word.substring(0,i+1)); 
    } 

} 
2

나는 끝의 return 문이 필요하지 않습니다. 당신의 getSubstrings 방법은 String을 반환로 선언 된 경우 (당신이했던 것처럼)

사실 당신은 return 문을 필요가 없습니다. 자바 언어 사양은 당신이 그렇게한다고 말합니다.

결과를 사용하지 않으려면 반환 유형을 void ...으로 지정해야하며 return 문은 필요하지 않습니다.

public void getSubstrings() { 
     // no 'return' required 
    } 

그러나 이제 메서드 이름이 잘못되었습니다. "get ..."이 뭔가를 반환하는 것은 일반적입니다. 그것이 "게터"가하는 일입니다.

관련 문제