使用 Stringbuilder 创建 long[] 数组
Create long[] Array with Stringbuilder
我想用 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;
}
我该如何解决?
感谢您的回答
您的 'longstringbuilder' 引用只包含一个包含数字、逗号和空格的字符串。您可以解析一个 %100 数字的字符串,但在您的情况下,您也有逗号和空格。
有几种解决方法,例如,您可以拆分字符串:String[] stringArray = longstringbuilder.split(", ");
,然后您可以解析 stringArray 的每个项目,因为它只包含数值。
使用 StringBuilder
看起来很长的路要走。使用 Stream
会简单得多:
protected long[] getpattern(int numbercount, int value) {
return IntStream.range(0, numbercount).mapToLong(i -> value).toArray();
}
您需要去掉字符串中的逗号和空格。我在这个例子中使用 trim,但你可能只是拆分为“,”。
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;
}
你知道数组中将有多少个元素:两倍 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
。
我想用 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;
}
我该如何解决? 感谢您的回答
您的 'longstringbuilder' 引用只包含一个包含数字、逗号和空格的字符串。您可以解析一个 %100 数字的字符串,但在您的情况下,您也有逗号和空格。
有几种解决方法,例如,您可以拆分字符串:String[] stringArray = longstringbuilder.split(", ");
,然后您可以解析 stringArray 的每个项目,因为它只包含数值。
使用 StringBuilder
看起来很长的路要走。使用 Stream
会简单得多:
protected long[] getpattern(int numbercount, int value) {
return IntStream.range(0, numbercount).mapToLong(i -> value).toArray();
}
您需要去掉字符串中的逗号和空格。我在这个例子中使用 trim,但你可能只是拆分为“,”。
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;
}
你知道数组中将有多少个元素:两倍 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
。