我有代码:
package package;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Test {
private List<Integer> liczby = new ArrayList<Integer>();
public void dodajLiczbe(int liczba) {
liczby.add(liczba);
}
public int wezLiczbe(int indeks) {
return liczby.get(indeks);
}
public int ileLiczb() {
return liczby.size();
}
public static void main(String[] args) {
Test w = new Test();
String nazwaPliku = "file.xyz";
try {
BufferedReader br = new BufferedReader(new FileReader(nazwaPliku));
String linia = null;
while ((linia = br.readLine()) != null) {
int liczba = Integer.parseInt(linia.trim());
w.dodajLiczbe(liczba);
}
} catch (Exception e) {
System.err.println("Wystapil blad przy wczytywaniu danych");
e.printStackTrace();
}
System.out.println("Wczytanych liczb: " + w.ileLiczb());
}
}
我试图导入我的ASCII文件,它有150k行,我在编译中有错误(第一行):
java.lang.NumberFormatException: For input string: "0.000 210 62"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at package.Test.main(Test.java:33)
第一栏必须是&#34;。&#34;。如果你有更好的选择,请告诉我这个。 file.xyz中的第一行:
0.000 210 62
0.000 217 79
0.000 224 91
0.000 231 99
0.000 238 109
答案 0 :(得分:5)
您正在呼叫linia.trim()
,但第一行不是有效数字,因为它包含空格。在将String
转换为Integers
之前,您需要首先将String[] parts = linia.trim().split(" ");
Integer firstNumber = Integer.parseInt(parts[0]);
的输出解析为{{1}}。
{{1}}
@Pshemo建议的更好的方法是使用Scanner类。