Java 使用Stringbuilder创建长[]数组
我想用Stringbuilder创建一个长[]数组,但通过这段代码我得到了“java.lang.NumberFormatException:” 我怎样才能解决这个问题?Java 使用Stringbuilder创建长[]数组,java,arrays,string,long-integer,stringbuilder,Java,Arrays,String,Long Integer,Stringbuilder,我想用Stringbuilder创建一个长[]数组,但通过这段代码我得到了“java.lang.NumberFormatException:” 我怎样才能解决这个问题? 感谢您的回答您的“longstringbuilder”引用只包含一个带有数字、逗号和空格的字符串。您可以解析一个%100数字的字符串,但在您的例子中,您也有逗号和空格 有几种解决方法,例如可以拆分字符串:String[]stringArray=longstringbuilder.split(“,”)0){ 追加(“100,”);
感谢您的回答您的“longstringbuilder”引用只包含一个带有数字、逗号和空格的字符串。您可以解析一个%100数字的字符串,但在您的例子中,您也有逗号和空格
有几种解决方法,例如可以拆分字符串:
String[]stringArray=longstringbuilder.split(“,”)然后您可以解析stringArray的每一项,因为它只包含数值。使用StringBuilder
看起来有很长的路要走。使用流
会简单得多:
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=新StringBuilder();
while(numbercount>0){
追加(“100,”);
追加(值+“,”);
数字计数--;
}
longstringbuilder.append(“100”);
字符串longstring=longstringbuilder.toString();
字符串[]标记=longstring.split(“,”);
long[]模式=新的long[tokens.length];
for(int i=0;i
您知道数组中将有多少个元素:两次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;
long[]值=新的long[2*numbercount+1];
对于(int a=0;a
根本不需要使用StringBuilder
。为什么您认为您的语法会起作用?您正在创建一个包含单个项的数组,而该项来自于解析一个长且不正确的字符串,这会导致异常。使用列表而不是字符串生成器。为什么要使用设计用于处理文本的类型来构建数字数组?你想在这里完成什么?为什么不使用long[]数组=新的long[numbercount]代码>然后在循环中填充它?(或者,numbercount*2
如果您希望每个值之间的值为100)或者如果OP对此不满意,那么构建数组并用for
循环填充它将非常非常非常简单。我很惊讶没有一顶冬季礼帽可以从@jonsket:-)获得评论,一班机FTW!这很好,因为每个其他值之间应该有一个100。因此,数字是原来的两倍
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;
}
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;