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++;
}
}
# 1 楼答案
您正在创建一个
StringBuilder
数组,但没有指定长度,即StringBuilder[] hemisphere = new StringBuilder[]{};
,因此您有一个空的array
试图填充,因此NullPointerException
# 2 楼答案
这将创建一个空数组,其中可以包含StringBuilder类型的实例。你最想做的是:
这将创建一个可附加到的实际StringBuilder对象
# 3 楼答案
我对Java真的很陌生,但是为什么在实例化构建器之后要使用
{}
括号呢?难道不应该是StringBuilder [] name = new StringBuilder []
?或者StringBuilder [][] name = new StringBuilder [][]
# 4 楼答案
您正在创建字符串生成器数组,但没有实例化它 指定使用数组时的长度
解决方案 //StringBuilder[]半球=新StringBuilder[长度]
这样就不会出现任何空指针异常 我希望这有帮助