2

私はJavaに不慣れで、いくつかのコースワークを行っています。ただし、次のコードでは、コンパイルしようとすると「到達不能ステートメント」というエラーが発生します。私が間違っていることについてのポインタはありますか?

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

2 に答える 2

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++;
}
于 2012-11-30T02:01:31.690 に答える
0

関数から戻った場合、関数が返されたポイント以降のステートメントは基本的に到達不能なステートメントであり、コンパイラーはそのようなステートメントでエラーを発行します。

ただし、次のコードは、戻り後に記述されたステートメントにもかかわらず、エラーを発行しません。

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

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

これは、最初のreturnステートメントがネストされたスコープ内に記述されており、関数スコープにすぐには表示されないためです。プログラムの実行は、a>bの場合にのみ最初のreturnステートメントを通過します。そうでない場合、そのコードブロックは実行されません。したがって、戻り後にステートメントがあるにもかかわらず、コードはコンパイル可能です。

于 2012-11-30T04:05:55.977 に答える