0

パラメータの数に応じて異なるコンストラクタを使用して、クラス(PhoneBook)の新しいオブジェクトを構築するメソッドを作成しようとしていますが、エラーが発生します

(スレッド「メイン」の例外 java.lang.ArrayIndexOutOfBoundsException: 0 )

public static PhoneBook createObjects(String fName,String lName,String num,String...optional)
{
    n++;    
    if (optional[0]==null)
        ArrayOfObjects[n]=new PhoneBook(fName,lName,num);
    else if (optional[1]==null)
        ArrayOfObjects[n]=new PhoneBook(fName,lName,num,optional[0]);

    return ArrayOfObjects[n];   
}
4

2 に答える 2

3

かどうかを確認する代わりに、オプションのパラメーターが存在するかどうかoptional[0] == nullを調べる必要があります。optional.length

についても同様ですoptional[1]

于 2012-12-09T19:02:50.163 に答える
0

ここで確認するoptional[0]のではなく、に確認する必要があります。また、それ自体がそうかもしれないことを覚えておいてください、それで次のようなものです:optional[1]optional.lengthoptionalnull

if(optional != null) {
    if(optional.length > 0) {
        // I now know that optional has at least one element in it, and optional[0] should be valid, though I don't know that it is non-null.
        if(optional.length > 1) {
            // I now know that optional[1] is valid, though I do not know it is non-null.
        }
    }
}

null以外が必要な場合:

if(optional.length > 0 && optional[0] != null)

2番目の部分はoptional[0] != null、最初の部分がtrueと評価された場合にのみ呼び出されます。

于 2012-12-09T19:09:16.667 に答える