拆分大负数的字符串并将其放入链接列表中

时间:2014-06-21 18:50:11

标签: java string parsing integer

这是我的方法,但是我输入了一个NumberFormatException" - "当我尝试以负数运行它时。

public newObj(String s)
{
    list = new LinkedList<Integer>();
    String[] splitted = s.split("\\d");

    int[] ints = new int[splitted.length];

    for (int i = 0; i < splitted.length - 1; i++) {
        ints[i] = Integer.parseInt(splitted[i]);
    }

    for (int j = 0; j < ints.length - 1; j++) {
        list.add(ints[j]);
    }

}

我的输入字符串只是&#34; -123456&#34;或&#34; 12345&#34;。正数有效,但我无法得到否定数据。

对于我的负输入字符串,我希望我的列表类似于[-1,-2,-3,-4,-5,-6]。

1 个答案:

答案 0 :(得分:4)

如果你有-123

,它会用数字模式分割数字

例如:

String str = "-123";
System.out.println(Arrays.toString(str.split("\\d")));

<强>输出

[-]

-无法解析为int

来自评论:

对于像-123456 op这样的输入,要将其设为正数

你可以通过

来完成
Math.abs(Integer.parseInt(inputString))

让它解析负数,然后你可以使用Math.abs()

获得其绝对值

进一步发表评论

操作想要分割每个数字并应用符号,您可以执行类似

的操作
    String str = "-123";
    int numbers[] = null;
    int characterIndex = 0;
    boolean isNegative = false;

    if (str.trim().startsWith("-")) {
        characterIndex = 1;
        isNegative = true;
        numbers = new int[str.length() - 1];
    } else {
        numbers = new int[str.length()];

    }

    for (int numIndex = 0; characterIndex < str.length(); characterIndex++, numIndex++) {
        numbers[numIndex] = Integer.parseInt(str.substring(characterIndex, characterIndex + 1));
        if (isNegative) {
            numbers[numIndex] = -1 * numbers[numIndex];
        }

    }
    System.out.println(Arrays.toString(numbers));

注意:错误处理留在您身上