如何将值附加到StringBuilder数组

时间:2013-04-02 18:12:15

标签: java stringbuilder

我正在解析十进制格式的网格坐标。我想将模式匹配存储在StringBuilder数组中以便进一步操作。但是,在每个while循环中调用append()时,我得到一个空指针。

String coordinateExample = "N14585928W084144340";
this.parseCoordinate(coordinateExample);
...

public void parseCoordinate(String coordinateString) {

    int i = 0;

    //extract NSEW leading characters
    Pattern pL = Pattern.compile("[A-Z]");
    Matcher m = pL.matcher(coordinateString);        
    StringBuilder[] hemisphere = new StringBuilder[]{};

    while (m.find()) {
        hemisphere[i].append(m.group());
        //System.out.println("m.group(): " + m.group());
        i++;
    }        
    // reset i
    i = 0;

    //extract decimal degree digits
    Pattern pN = Pattern.compile("[0-9]++");
    Matcher n = pN.matcher(coordinateString);
    StringBuilder[] coordinate = new StringBuilder[]{};

    while (n.find()) {            
        coordinate[i].append(n.group());
        //System.out.println("q.group(): " + n.group());
        i++;
    }
}

4 个答案:

答案 0 :(得分:6)

StringBuilder[] coordinate = new StringBuilder[]{};

这是创建一个可以包含StringBuilder类型实例的空数组。你最想做的是:

StringBuilder coordinate = new StringBuilder();

创建一个可附加到的实际StringBuilder对象。

答案 1 :(得分:3)

您正在创建字符串构建器数组,但您没有实例化它 指定使用数组时的长度

解 // StringBuilder [] hemisphere = new StringBuilder [length];

for(int i=0;i<length;i++){
hemisphere [i]=new StringBuilder();
}

然后你不会得到任何空指针异常 我希望这有帮助

答案 2 :(得分:0)

您正在创建一个StringBuilder的数组,但没有指定长度StringBuilder[] hemisphere = new StringBuilder[]{};,因此您要填充空array,因此NullPointerException

答案 3 :(得分:0)

我是Java新手,但为什么在构建器实例化后使用{}括号?它不应该只是StringBuilder [] name = new StringBuilder []吗?或许StringBuilder [][] name = new StringBuilder [][]