如何从字符串中删除正在解析的 space?

How to remove space being parsed from string?

我想读取包含如下数字序列的文本文件:

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)

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

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

的数组 [2]

字符串 split 方法接受正则表达式,所以你可以这样做来分割多个空格

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

这样做

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();
}