使用Stringbuilder创建long []数组

问题描述 投票:1回答:4

我想用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;

    }

我该如何解决这个问题?谢谢你的回答

java arrays string long-integer stringbuilder
4个回答
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


0
投票

你的'longstringbuilder'引用只包含带有数字,逗号和空格的String。您可以解析%100数字的字符串,但在您的情况下,您也有逗号和空格。

有几种解决方法,例如你可以拆分String:String[] stringArray = longstringbuilder.split(", ");,然后你可以解析stringArray的每一项,因为它只包含数值。


0
投票

使用StringBuilder看起来像很长的路。使用Stream会简单得多:

protected long[] getpattern(int numbercount, int value) {
    return IntStream.range(0, numbercount).mapToLong(i -> value).toArray();
}

0
投票

你需要摆脱字符串中的逗号和空格。我在这个例子中使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.