1

我正在尝试根据我在 side2[] 数组中的对象编写一个新文档。现在不幸的是,这个数组中的一些索引是空的,当它碰到其中一个时,它只会给我一个 NullPointerException。该数组有 10 个索引,但在这种情况下,并非所有索引都需要。我尝试了 try catch 语句,希望在遇到 null 后继续执行,但它仍然会停止执行并且不会编写新文档。作为对象一部分的堆栈(srail)包含我要打印的数据。

这是我的代码:

    // Write to the file
    for(int y=0; y<=side2.length; y++)
    { 
        String g = side2[y].toString();

        if(side2[y]!=null){
            while(!side2[y].sRail.isEmpty())
            {
                out.write(side2[y].sRail.pop().toString());
                out.newLine();
                out.newLine();
            }
            out.write(g);
        }
    }

    //Close the output stream/file
    out.close();
}
catch (Exception e) {System.err.println("Error: " + e.getMessage());}
4

1 回答 1

3

问题是代码在检查对象之前toString()调用了. 您可以通过在循环顶部添加条件来跳过对象,如下所示:side2[y]nullnull

for(int y=0; y<=side2.length; y++) {
    if(side2[y] == null) {
        continue;
    }
    String g = side2[y].toString();
    // No further checks for null are necessary on side2[y]
    while(!side2[y].sRail.isEmpty()) {
        out.write(side2[y].sRail.pop().toString());
        out.newLine();
        out.newLine();
    }
    out.write(g);
}
于 2013-11-04T00:10:31.473 回答