我想用Stringbuilder创建一个long []数组,但是使用这段代码我得到" java.lang.NumberFormatException:"
protected long[] getpattern(int numbercount, int value) {
StringBuilder longstringbuilder = new StringBuilder();
while(numbercount > 0) {
longstringbuilder.append("100, ");
longstringbuilder.append(value + ", ");
numbercount--;
}
longstringbuilder.append("100");
String longstring = longstringbuilder.toString();
long[] pattern = new long[] {Long.parseLong(longstring)};
return pattern;
}
我该如何解决? 谢谢你的回答
答案 0 :(得分:2)
你知道数组中会有多少元素:两次numbercount
,加上1.所以只需构建那个数组:
long[] values = new long[2*numbercount+1];
for (int a = 0; a < numbercount; ++a) {
values[2*a+0] = 100;
values[2*a+1] = value;
}
values[values.length-1] = 100;
根本不需要StringBuilder
。
答案 1 :(得分:0)
你的'longstringbuilder'引用只包含带有数字,逗号和空格的字符串。您可以解析%100数字的字符串,但在您的情况下,您也有逗号和空格。
有几种解决方法,例如你可以拆分String:String[] stringArray = longstringbuilder.split(", ");
,然后你可以解析stringArray的每一项,因为它只包含数值。
答案 2 :(得分:0)
使用free
看起来很长。使用StringBuilder
会简单得多:
Stream
答案 3 :(得分:0)
你需要摆脱字符串中的逗号和空格。我在这个例子中使用了trim,但你可能只是拆分&#34;,&#34;。
protected long[] getpattern(int numbercount, int value) {
StringBuilder longstringbuilder = new StringBuilder();
while(numbercount > 0) {
longstringbuilder.append("100, ");
longstringbuilder.append(value + ", ");
numbercount--;
}
longstringbuilder.append("100");
String longstring = longstringbuilder.toString();
String[] tokens = longstring.split(",");
long[] pattern = new long[tokens.length];
for (int i = 0; i < tokens.length; i++) {
pattern[i] = Long.parseLong(tokens[i].trim());
}
return pattern;
}