0

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

这是一个屏幕截图:

截屏

4

3 回答 3

5

如果这一行:

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

抛出 NPE,只有一种可能的解释。 bnull

您可以通过在声明之前添加此声明来证明(或反驳)这一点for

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

一旦你确认了这一点,你需要向后工作以找出为什么b会出现null在那个时候。根据您向我们展示的代码,我无法提供任何见解。

于 2013-05-13T13:23:15.073 回答
0

它在我的代码中正常工作,在处理它之前检查 b 是否为空。

if(b!=null)
{
for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
}
于 2013-05-13T13:23:00.673 回答
0

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

for (int i = 0; i < b.length(); i++) 
        {
于 2020-06-01T04:00:48.650 回答