如何删除从字符串中解析的空间?

时间:2018-03-19 08:29:04

标签: java numberformatexception

我想阅读一个包含数字序列的文本文件,如下所示:

1.000000  1:-0.362772 2:-0.314085 3:-0.177185 4:0.898650 5:-0.154588

目前,我正在读取该行,并使用split()方法拆分数字并将数字存储到数组中。有3个变量将用于存储数组元素outputnumbervalue1.000000将作为整数输出,[1, 2, 3, 4, 5]将是数字数组,[-0.362772,-0.314085,-0.177185,0.898650,-0.154588]将是值数组。

这是我的代码:

while (line != null) {
        double output = 0;
        inputs = new double[6];
        String[] inputPairs = line.split(" ");
        output = Double.parseDouble(inputPairs[0]);
        for (int i = 1; i < inputPairs.length; i++) {
            int components = Integer.parseInt(inputPairs[i].split(":")[0]);
            double data = Double.parseDouble(inputPairs[i].split(":")[1]);
            inputs[components] = data;
        }
        outputs[counter] = (int) output;
        input[counter] = inputs;
        counter++;
        line = br.readLine();
    }

然而,当我执行代码时,我得到了这个例外:

Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:592) at java.lang.Integer.parseInt(Integer.java:615) at testReadFile.main(testReadFile.java:32)

我注意到第一个索引后有一个额外的空格:1.000000 1:-0.362772存储在数组的第二个元素中。

如何删除空格?我使用过trim()但它不起作用。或者有没有办法删除包含space

的数组[2]

2 个答案:

答案 0 :(得分:0)

String split方法接受正则表达式,因此您可以通过多个空格分割

String[] inputPairs = line.split(" +");

答案 1 :(得分:0)

这样做

while (line != null) {
    if (line.trim().isEmpty()) {
        continue;
    }
    double output = 0;
    inputs = new double[6];
    String[] inputPairs = line.split(" ");
    output = Double.parseDouble(inputPairs[0]);
    for (int i = 1; i < inputPairs.length; i++) {
        int components = Integer.parseInt(inputPairs[i].split(":")[0]);
        double data = Double.parseDouble(inputPairs[i].split(":")[1]);
        inputs[components] = data;
    }
    outputs[counter] = (int) output;
    input[counter] = inputs;
    counter++;
    line = br.readLine();
}