无法将char附加到StringBuffer 2维数组

时间:2014-02-05 16:00:51

标签: java arrays char append stringbuffer

有没有人知道为什么我不能将char添加到这个StringBuffer数组中(在我下面的例子中),有人可以告诉我我需要做什么吗?

public class test {
    public static void main(String args[]){

        StringBuffer[][] templates = new StringBuffer[3][3];

        templates[0][0].append('h');
    }
}

我对此代码的输出是:

output:     Exception in thread "main" java.lang.NullPointerException
            at test.main(test.java:6)

如果您知道任何解决方案,这对我很有帮助,请回复此

3 个答案:

答案 0 :(得分:3)

下面的语句只是声明一个数组,但不会初始化它的元素:

    StringBuffer[][] templates = new StringBuffer[3][3];

在尝试将内容附加到数组元素之前,需要初始化它们。不这样做会导致NullPointerException

添加此初始化

    templates[0][0] = new StringBuffer();

然后追加

    templates[0][0].append('h');

答案 1 :(得分:1)

您需要在追加某些内容之前初始化缓冲区

templates[0][0] = new StringBuffer();

答案 2 :(得分:0)

其他人正确地指出了正确的答案,但当你尝试做templates[1][2].append('h');之类的事情会发生什么?

你真正需要的是这样的:

public class Test {          //<---Classes should be capitalized.

    public static final int ARRAY_SIZE = 3;  //Constants are your friend.

    //Have a method for init of the double array
    public static StringBuffer[][] initArray() {
       StringBuffer[][] array = new StringBuffer[ARRAY_SIZE][ARRAY_SIZE];
       for(int i = 0;i<ARRAY_SIZE;i++) {
            for(int j=0;j<ARRAY_SIZE;j++) array[i][j] = new StringBuffer();
        }
        return array;
    }

    public static void main(String args[]){

       StringBuffer[][] templates = initArray();

        templates[0][0].append('h');
        //You are now free to conquer the world with your StringBuffer Matrix.
    }
}

使用常量非常重要,因为期望矩阵大小发生​​变化是合理的。通过使用常量,您可以只在一个位置更改它,而不是分散在整个程序中。