如何将值附加到StringBuilder数组

Ted*_*Ted 2 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++;
    }
}
Run Code Online (Sandbox Code Playgroud)

Dea*_*ron 6

StringBuilder[] coordinate = new StringBuilder[]{};
Run Code Online (Sandbox Code Playgroud)

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

StringBuilder coordinate = new StringBuilder();
Run Code Online (Sandbox Code Playgroud)

它创建了一个可附加到的实际StringBuilder对象.

  • 问题是您将数组与实际的StringBuilder对象混淆.数组是一个数组,绝不包含或反映String Builder的功能,它恰好能够包含String Builder的实例.如果你想要一个包含两个不同的字符串构建器实例的数组,那么你应该执行以下操作:StringBuilder [] coordinate = new StringBuilder [2]; coordinate [0] = new StringBuilder(); coordinate [1] = new StringBuilder(); 然后,您将访问每个实例作为坐标[0] .append("") (2认同)