我想阅读一个包含数字序列的文本文件,如下所示:
1.000000 1:-0.362772 2:-0.314085 3:-0.177185 4:0.898650 5:-0.154588
目前,我正在读取该行,并使用split()
方法拆分数字并将数字存储到数组中。有3个变量将用于存储数组元素output
,number
和value
。
1.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
?
答案 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();
}