StringBuilder.append()导致java.lang.NullPointerException

时间:2013-05-13 13:10:03

标签: java nullpointerexception stringbuilder

我使用append()类的StringBuilder方法遇到了一个奇怪的问题;这是方法:

public StringBuilder toStringBuilder(byte[] b)
{
    StringBuilder s = new StringBuilder();
    for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
    System.out.println(s);
    return s;
}

需要一个字节数组并将其转换为StringBuilder(同时执行其他操作)。

一切似乎都没问题,当我运行程序时,它打印出正确的结果,但也显示NullPointerException不允许我继续使用该程序;异常指向第四行

(for (int i = 0; i < b.length; i++))

以下是截图:

Screenshot

3 个答案:

答案 0 :(得分:5)

如果这一行:

for (int i = 0; i < b.length; i++) 
抛出一个NPE,只有一个可能的解释。 bnull

您可以通过在for声明之前立即添加此声明来证明(或反驳)此声明。

System.out.println("b is " + b);

确认后,您需要向后工作以确定b在此时为null的原因。根据您向我们展示的代码,我无法提供任何见解。

答案 1 :(得分:0)

它在我的代码中正常工作,在将其处理为null之前检​​查b。

if(b!=null)
{
for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
}

答案 2 :(得分:0)

尝试在长度后添加()括号,如下所示:

for (int i = 0; i < b.length(); i++) 
        {