0

私は以下に示すようなコードを持っています:

private static String getShoppingLine()
{
    for(int index = 0; index <= ProductInfoName.length; index++)
    {
           return ProductInfoName[index];
    }
}

ただし、最後に return ステートメントがあるとエラーになります。しかし、私はすでにループに1つありました。お知らせ下さい。ありがとう。

4

4 に答える 4

0
private static String getShoppingLine()
{
    for(int index = 0; index <= ProductInfoName.length; index++)
    {
           return ProductInfoName[index];  // don't do this.
    }
    return null;  //add here too
}

return文を内側に書くのではなく、for-loop外側に書きます。なぜなら、制御は に戻るからProductInfoName[0]です。

注 :ステートメントreturnはメソッド内にある必要があります (メソッドに戻り値の型を宣言している場合)。したがって、for-loop常に実行されるという保証はありません。次に、そのような場合、メソッドは何も返しません。returnしたがって、の外側にもう 1 つのステートメントを追加する必要がありますfor-loop

于 2012-12-23T10:33:19.737 に答える
0

もちろんそうです。ProductInfoName.length負の可能性があります。負の場合、returnステートメントは実行されません。

注: もちろん実際には負になることはありませんが、コンパイラはコードをコンパイルするときにそれを知りません。

2 番目の注意: これは、このメソッドを記述する方法ではありません。常に配列の最初の要素を返します (存在しない場合は、例外をスローします)。コードを次のものに置き換える必要があります。

private static ...
{
    if(ProductInfoName.length>0)
        return ProductInfoName[0];
    return null;
}
于 2012-12-23T10:34:01.527 に答える
0

あなたは常に ProductInfoName[0] を返します。配列にオブジェクトがまったくない場合はどうなりますか?

于 2012-12-23T10:34:36.737 に答える
0

コードで何も返していません。

以下のコードのように最後の値の変更を返したい場合

private static String getShoppingLine()
{
    String str="";
    for(int index = 0; index <= ProductInfoName.length; index++)
    {
           str=ProductInfoName[index];
    }
    return str;
}
于 2012-12-23T10:38:34.790 に答える