0

我正在尝试根据参数的数量使用不同的构造函数构建类(PhoneBook)的新对象的方法,但是它给出了错误

(线程“main”中的异常 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.length。另外,请记住,optional它本身很可能是null,所以类似于:

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.
        }
    }
}

如果你需要非空:

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

第二部分optional[0] != null只有在第一部分评估为真时才会被调用。

于 2012-12-09T19:09:16.667 回答