我有一个字符数组。我必须在第3个字符后插入','。我写了以下代码。
public class Comma {
char [] str = {'1','2','3','4','5','6','7','8','9'};
char [] buf = null;
int size = str.length;
int c=1;
public void insert()
{
for(int i=0;i<size+10;i++)
{
c++;
if(c==3)
{
buf[i]=',';
i++;
c=1;
}
buf[i]=str[i];
}
for(int i=0;i<buf.length;i++)
System.out.println("Final String is"+buf[i]);
}
public static void main(String args[])
{
Comma c = new Comma();
c.insert();
}
}
当我运行它时,它显示空指针异常。我哪里出错了?
答案 0 :(得分:6)
char [] buf = null;
声明为null
,您正在访问buf[i]=',';
尝试声明像
char [] buf=new char[some range];
实施例
char [] buf=new char[8];
答案 1 :(得分:2)
您使用了buf.length
,但您的buf被声明为null。
答案 2 :(得分:2)
您尚未初始化char buf[]
并且您正在尝试为其分配值。您需要按以下方式对其进行初始化,
char [] buf=new char[10];
然后使用它,否则会抛出NullPointerException。
答案 3 :(得分:1)
在java中,你必须在第一次创建时给出数组大小,之后就不能改变了。 所以你会想要机会
char [] buf = null;
到
char [] buf = new char[10];
这样你就可以为你想要放置的字符保留空间。
答案 4 :(得分:1)
初始化如下
char [] buf =new char[somevalue] ;
答案 5 :(得分:0)
buf是一个大小为null的数组。因此空指针异常。
答案 6 :(得分:0)
在这里,您将char [] buf = null;
声明为null并且您正在访问它。
所以缓冲区是null。所以它在这里给出NullPointerException。
解决方案:
char [] buf = char[10];
答案 7 :(得分:0)
使用一些大小初始化数组
char [] buf = char[size];
答案 8 :(得分:0)
因为你没有初始化你的buf
使用此
char [] buf = new char[str.length];