【问题标题】:NullPointerException when assigning to arr[x][y] in a multi-dimensional array分配给多维数组中的 arr[x][y] 时出现 NullPointerException
【发布时间】:2011-09-28 19:15:41
【问题描述】:

我知道为什么会出现错误并且我已修复它.. 我需要有人正确解释它.. 它编译得很好,但在运行时它在 appString[i][j] = 行显示空指针异常s[j];..有人知道原因吗...?

appString = new String[app.size()][];
for(int i = 0; i<app.size();i++)
{
    Vector appVec = (Vector) app.get(i);
    String[] s = new String[appVec.size()];
    appVec.toArray(s);
    for(int j = 0 ; j<s.length;j++)
    {
        //String s1 = s[j];
        appString[i][j] = s[j];
    }
}

【问题讨论】:

    标签: java arrays matrix multidimensional-array nullpointerexception


    【解决方案1】:

    您已经创建了 顶级 数组,但它的每个元素都是空的。你需要这样的东西:

    appString[i] = new String[s.length];
    

    在你的循环中。或者假设你不再需要数组,你不需要循环:

    appString = new String[app.size()][];
    for(int i = 0; i<app.size();i++)
    {
        Vector appVec = (Vector) app.get(i);
        String[] s = new String[appVec.size()];
        appVec.toArray(s);
        appString[i] = s;
    }
    

    【讨论】:

    • @devA:它没有显示编译时错误,因为它在编译时没有任何问题。您创建了一个元素类型为String[] 的数组,具有特定的大小。您只是没有初始化任何这些元素。它和Foo[] x = new Foo[10]; 一样——每个元素都是空的。
    • @devA:我有一个错字。现已修复 - 尝试使用编辑后的代码。
    【解决方案2】:

    喜欢@Jon 的解决方案,但要短一些。

    Vector<Vector<String>> app = ...
    List<String[]> arrays = new ArrayList<String[]>();
    for(Vector<String> vector: app) 
       arrays.add(vector.toArray(new String[vector.size()]));
    appString = arrays.toArray(new String[arrays.size()][]);
    

    【讨论】:

    • 我试图尽可能少地更改 OP 的代码。还有Vector?真的吗? :)
    • 这我已经完成了.. 我真正想做的是从一个返回向量的方法中获取字符串数组,该向量又存储向量.. 无论如何谢谢..
    • @Jon,我也不建议使用 Vector,我认为这是使用的。否则,我确实倾向于使答案尽可能不同,重复你的答案是没有意义的。 ;)
    【解决方案3】:

    以下语句将创建一个字符串数组,其大小为第一维应用程序

    appString = new String[app.size()][];
    

    但是该二维数组的所有值都将被空填充。

    在运行时处理appString[i][j] 时,将查找第一个appString[i] 存储桶,并在其中查找appString[i][j]。

    这里appString[i] 本身就是null,因此你得到了NullPointerException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多