我有代码:
package package; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List; public class Test { private Listliczby = new ArrayList (); 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)
第一列必须带有".".如果你有更好的选择,请告诉我这个.file.xyz中的第一行:
0.000 210 62 0.000 217 79 0.000 224 91 0.000 231 99 0.000 238 109
doublesharp.. 5
您正在呼叫Integer.parseInt(linia.trim())
,但第一行不是有效数字,因为它包含空格.在将其片段转换linia.trim()
为String
之前,您需要首先解析输出Integers
.
String[] parts = linia.trim().split(" "); Integer firstNumber = Integer.parseInt(parts[0]);
可能@Pshemo提出的更好的方法是使用Scanner类.
您正在呼叫Integer.parseInt(linia.trim())
,但第一行不是有效数字,因为它包含空格.在将其片段转换linia.trim()
为String
之前,您需要首先解析输出Integers
.
String[] parts = linia.trim().split(" "); Integer firstNumber = Integer.parseInt(parts[0]);
可能@Pshemo提出的更好的方法是使用Scanner类.