2012-11-30 2 views
2

저는 Java를 처음 사용하고 약간의 교과 과정을 사용하고 있습니다. 그러나 다음 코드에서는 컴파일 할 때 "연결할 수없는 문"오류가 발생합니다. 내가 뭘 잘못하고 있는지에 대한 조언은? 당신이 함수에서 반환하면"while"문을 컴파일하려고 할 때 "도달 할 수없는 문"

public String getDeliveredList() { 
    int count = 0; 
    while (count < deliveredList.size()){ 
     return ("Order # " + count + deliveredList.get(count).getAsString()); 
     count++; 
    } 
} 
+1

신고서를 제출 한 후에 진술을 할 수 없습니다. 도달 할 수 없으므로 결코 실행되지 않습니다. 코드가 이미 메소드에서 실행을 반환했습니다. –

답변

10

, 논리적으로 더 이상 그 시점 이후에 아무것도 실행할 수 없습니다 - count++ 문에 도달되지 않습니다.

while (count < deliveredList.size()){ 

    // function always ends and returns value here 
    return ("Order # " + count + deliveredList.get(count).getAsString()); 

    // this will never get run 
    count++; 
} 
+2

예, 루틴은 최대 하나 (부분) 반복 만 수행합니다. 'if (count

+0

dbaseman이 옳습니다. return 문 앞에'count ++;'를 시도해보아야한다. – hologram

0

당신은 반환 된 기능은 기본적으로 도달 할 수없는 문장 곳에서 시점 이후 명령문 다음 함수에서 반환 한 컴파일러는 문에 오류가 발행됩니다. 첫 번째 return 문이 중첩 된 범위 내에서 작성되고 기능 범위에 바로 표시되지 않기 때문에 다음 코드는 반환

void max(int a,int b) 
{ 
    if(a>b) 
    { 
     System.out.println(a+" is greater"); 
     return; 
    } 

    System.out.println(b+" is greater"); 
    return; 
} 

이 후 작성 제표의 오류 inspite를 발행하지 않습니다 그러나

이다. a> b 일 때 프로그램 실행은 첫 번째 return 문을 통과합니다. 그렇지 않으면 해당 코드 블록이 실행되지 않습니다. 따라서 반환 후 진술이 있음에도 불구하고 코드는 컴파일 가능합니다.