2013-06-28 88 views
-1

我有一個字符數組。我必須在第三個字符之後插入','。我寫了下面的代碼。在Java中插入逗號時出現空指針異常

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

當我運行它時,它顯示空指針異常。我哪裏做錯了?

+2

哪條線拋出NPE?調試此類問題時,始終需要此信息。 –

+0

NullPointerException發生在哪裏? –

+0

第16行和第28行...... –

回答

6

char [] buf = null;聲明爲null和你訪問它buf[i]=',';

試圖聲明像

char [] buf=new char[some range]; 

例:

char [] buf=new char[8]; 
+0

很好哦! 1+找到第一個。 –

2

您使用buf.length,但你的BUF被宣佈無效。

2

您還沒有初始化char buf[],你試圖將值分配給it.You需要如下初始化,

char [] buf=new char[10]; 

,然後用它,否則它會拋出NullPointerException。

0

buf是一個大小爲null的數組。因此空指針異常。

0

在這裏,您宣佈char [] buf = null;爲空,並且您正在訪問它。

因此緩衝區爲空。所以這裏給出了NullPointerException。

解決方案:

char [] buf = char[10]; 
0

一些大小初始化數組

char [] buf = char[size]; 
0

因爲你沒有初始化年BUF

使用本

char [] buf = new char[str.length]; 
1

在Java中,你有給一個當你第一次創建它時,它的大小是可以改變的。 所以,你會希望有機會

char [] buf = null;

char [] buf = new char[10]; 

這樣,你就實際上是要放置的字符預留空間。

1

初始化如下

char [] buf =new char[somevalue] ;