Java 使用Stringbuilder创建长[]数组

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,”);

我想用Stringbuilder创建一个长[]数组,但通过这段代码我得到了“java.lang.NumberFormatException:”

我怎样才能解决这个问题?
感谢您的回答

您的“longstringbuilder”引用只包含一个带有数字、逗号和空格的字符串。您可以解析一个%100数字的字符串,但在您的例子中,您也有逗号和空格


有几种解决方法,例如可以拆分字符串:
String[]stringArray=longstringbuilder.split(“,”)使用
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;