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

问题描述 投票:0回答:3

我正在使用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++))

这里是屏幕截图:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9lMWZBNC5wbmcifQ==” alt =“截图”>

java nullpointerexception stringbuilder
3个回答
5
投票

如果此行:

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

引发NPE,只有一种可能的解释。 bnull

您可以通过在for语句之前添加此语句来证明(或反对)。

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

一旦确认,您需要倒退以弄清楚为什么此时bnull。根据您显示给我们的代码,我无法提供任何见解。


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));
        }
}

0
投票

尝试在长度后加上(),如下:

for(int i = 0; i

© www.soinside.com 2019 - 2024. All rights reserved.