使用Stringbuilder创建long []数组

时间:2017-12-17 17:19:01

标签: java arrays string long-integer 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;

    }

我该如何解决? 谢谢你的回答

4 个答案:

答案 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;
}