2017-02-15 1 views
0

아래에 만든 다음 toString() 메서드에 대한 간단한 질문이 있습니다.메서드에서 반환 오류

public String toString() 
{ 
    for (int d = 0; d < words.size(); d++) 
    { 
     return "The word: " + words.get(d); 
    } 
    return ""; 
} 

반환 :

The word: apple 
The word: banana 
The word: grape 

나는이 질문은 물어 그 이유를 말씀 {사과, 바나나, 포도}의 내용과 ArrayList의 경우 방법이 있다면, 난 그냥 wonderning했다 내가 선 ommited 때 때문에 :

return ""; 

을 내가 return 문 누락 말했다 오류를 가지고, 그래서 컴퓨터가 return 문을 인식되지 않을 수 있습니다 생각 :

반환 6,
"return "The word: " + words.get(d);" 

대신 :

The word: apple 
The word: banana 
The word: grape 

그것은 반환 :

null or "" 

나는이 필요한 경우 확실하지 않다, 그러나 나는 또한 단지 내가 가진 코드를 넣어 가지고 전에 return 문이 누락되었습니다.

public String toString() 
{ 
    for (int d = 0; d < words.size(); d++) 
    { 
     return "The word: " + words.get(d); 
    } 
} 

정확한 오류는 두 번째에서 마지막으로 닫은 대괄호를 돌고있는 빨간색 선이었습니다. 정확한 오류 메시지가 있었다 :

업데이트 1 "return 문 누락"

정말 모든 도움과 내가 얻을 수있는 코드의 건설적인 비판을 주셔서 감사합니다. 나는이 간단한 질문을 너무 복잡하게 만들지 않았 으면 좋겠습니다. 대단히 감사합니다 :)

업데이트 2 :

내가 너무 많은 메모를 떠나 죄송합니다. 그러나이 질문이 일반적인 질문인지 궁금해합니다. 왜냐하면이 질문이 수업에서 많이 나오고 질문에 답할 수없는 선생님이 많아 보이는 사람이 많습니다. 다시 한 번 감사드립니다 :)

+0

이 _which_ 열매를 알아낼 수 없기 때문에 귀하의 방법은 이해하지 않는 것이해야 그러므로, 그것들 모두를 반복하고있다. 오류에 관해서는, 컴파일러는'for' 루프가 실행되지 않아야한다는 것을 발견했습니다. 그 루프 다음에 return 문이 있어야합니다. 'return "''을 제거하면 코드가 파손되었습니다. –

+0

왜 'return' 문을 루프 안에 넣고 있습니까? 즉 처음으로 루프를 통과 할 때 메서드에서 돌아 왔고 나머지 루프는 절대 통과하지 못합니다. 값을 반환하는 메서드는 하나의 값만 반환합니다. 그 방법이 어떻게 세 가지 다른 값을 반환 할 것이라고 생각 했습니까? – ajb

+0

마지막 질문에 답하기 : (1) 질문자가 이와 같은 "return"문장으로 반복문을 작성하고 왜 잘못되었는지 이해하지 못했던 여러 다른 게시물을 보았습니다. (2)이 질문에 답할 수없는 사람은 적어도 컴퓨터 과학 수업에서 조교가되어서는 안됩니다. (영어 조명 기술자 인 경우 나에게 괜찮습니다.) – ajb

답변

1

String은 현재 구성하려는 개별 String이 아니라 해당 방법으로 만 반환 할 수 있습니다. 대신 전체 출력을 빌드하려면 StringBuilder과 같은 것을 사용하고 return을 한 번 사용하십시오.

public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    for (int d = 0; d < words.size(); d++) { 
     sb.append("The word: ").append(words.get(d)) // 
       .append(System.lineSeparator()); 
    } 
    return sb.toString(); 
} 

또는 비효율적 (하지만 여전히 StringBuilder, 단지 많은 임시 보이지 않는 것들)

public String toString() { 
    String sb = ""; 
    for (int d = 0; d < words.size(); d++) { 
     sb += "The word: " + words.get(d) + System.lineSeparator(); 
    } 
    return sb; 
} 
+0

이것은 아주 좋은 대답처럼 보입니다. 그러나 우리는 StringBuilder를 아직 배웠습니다. –

+0

한 번만 반환 할 수있는 다른 방법이 있습니까? –

+0

@SteveDav 당신이 당신의 방법을 돌려주기를 원하는지 확실하지 않습니다. 'String'을 하나만 반환 할 수 있습니다. 그 '문자열'이 원하는 것은 무엇입니까? – ajb