数组引用java中的预期异常

时间:2014-12-18 14:53:08

标签: java arrays

我只是尝试使用现有的2d数组调用properties和新的两个值sourceURLfetchURL来创建新的2d数组。

public static String[][] setProperties(String[][] properties, String sourceURL, String fetchURL) {
        String[][] propertyArray = new String[properties.length][];
        for (int i = 0; i <= properties.length; i++) {
            if (i < properties.length) {
                propertyArray[i][0] = properties[i][0];
                propertyArray[i][1] = properties[i][1];
            } else {
                propertyArray[properties.length][0] = sourceURL;
                propertyArray[properties.length][1] = fetchURL;
                return propertyArray;
            }
        }
        return new String[0][];
    }

当我这样做时,我在propertyArray[i][0] = properties[i][0];行中得到一个异常说“预期的数组引用”。有人可以帮我创建这个功能吗?

3 个答案:

答案 0 :(得分:4)

我想这个:

String[][] propertyArray = new String[properties.length][];
for (int i = 0; i <= properties.length; i++) {
    if (i < properties.length) {
       propertyArray[i][0] = properties[i][0];

错误,在调用列出的方法之前,您可能遇到类似的问题。

您正在构建一个size [x] []的propertyArray,这意味着第二个维度不存在。 调用propertyArray [i] [0]会导致错误。 您应该首先在要访问它的位置创建一个数组

propertyArray[i] = new String[properties[i].length]; 

此外,你运行i从0到properties.length(这意味着properties [i] =数组索引越界)

答案 1 :(得分:3)

您还没有设置数组的第二个维度。可能它会抛出NullPointerException

String[][] propertyArray = new String[properties.length][2];

你也错过了一个逻辑

  • 你的循环运行properties.length+1次。因此,最好将尺寸更改为properties.length+1
  

String[][] propertyArray = new String[properties.length+1][2];

答案 2 :(得分:1)

我想你想要

String[][] propertyArray = new String[properties.length + 1][];

您正在尝试添加额外的属性,因此您需要的元素比您给出的元素多一个。