我正在解析十进制格式的网格坐标。我想将模式匹配存储在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++;
}
}
答案 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 [][]
?