-1

私は文字配列を持っています。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();
   }
   }

実行すると、null ポインター例外が表示されます。どこで私は間違えましたか?

4

9 に答える 9

6

char [] buf = null;として宣言されnull、アクセスしています buf[i]=',';

のように宣言してみてください

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

例:

 char [] buf=new char[8];
于 2013-06-28T11:10:52.977 に答える
2

初期化されておらずchar buf[]、それに値を割り当てようとしています。以下のように初期化する必要があります。

char [] buf=new char[10];

そうしないと、NullPointerException がスローされます。

于 2013-06-28T11:13:39.867 に答える
2

を使用buf.lengthしましたが、buf が null と宣言されています。

于 2013-06-28T11:11:24.950 に答える
1

Javaでは、最初に配列を作成するときに配列サイズを指定する必要があり、その後は変更できません。だからあなたはチャンスが欲しいでしょう

char [] buf = null;

の中へ

char [] buf = new char[10];

そうすれば、配置したい文字用のスペースを実際に確保できます。

于 2013-06-28T11:18:04.493 に答える
1

次のように初期化します

 char [] buf =new char[somevalue] ;
于 2013-06-28T11:18:48.030 に答える
0

buf は、サイズが null の配列です。したがって、ヌルポインタ例外です。

于 2013-06-28T11:16:04.420 に答える
0

ここではchar [] buf = null;null として宣言し、それにアクセスしています。

したがって、バッファはnullです。したがって、ここでNullPointerExceptionを提供しています。

解決:

char [] buf = char[10];
于 2013-06-28T11:16:13.883 に答える
0

配列をある程度のサイズで初期化する

 char [] buf = char[size];
于 2013-06-28T11:16:47.443 に答える
0

yr buf を初期化していないため

これを使って

char [] buf = new char[str.length];
于 2013-06-28T11:17:17.143 に答える