我正在做一個 toto-appilcation,我必須從 CSV 檔案中讀取資料。不幸的是,我的程式不起作用,出現以下錯誤:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""2015"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:654)
at java.base/java.lang.Integer.parseInt(Integer.java:786)
at com.epam.training.toto.data.FileBasedDataStore.init(FileBasedDataStore.java:31)
at com.epam.training.toto.App.main(App.java:20)
CSV 檔案由分號分隔的資料、前導標點符號和尾隨標點符號組成;像這樣:
"2015;1;2;24;240 EUR"
(我有更多資料,我只是想展示一個例子)
基本上我試圖擺脫標點符號和值的型別,所以當我試圖將檔案決議money為int.
我嘗試了我在互聯網上找到的幾種方法,但是它要么由于 引發錯誤,"要么它沒有洗掉 ,EUR或者它全部替換為" ",這也會引發錯誤。
我的代碼中應該處理決議的部分目前如下所示:
try (BufferedReader reader = new BufferedReader(new FileReader(init))) {
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.replaceAll("\\p{Punct}" "EUR", " ").split(";");
int year = Integer.parseInt(fields[0]);
int week = Integer.parseInt(fields[1]);
etc...
請不要向我扔石頭,我是一個初學者。
uj5u.com熱心網友回復:
可能還有其他方法,但我認為這對你來說可能更容易。
String[] fields = line.split(";");
// removing 1st char from 1st word
fields[0] = fields[0].substring(1)
// removing currency from last field
// split by space and get the first word
fields[fields.length-1] = fields[fields.length-1].split(" ")[0];
//
更多按空格分割的方法:如何按空格分割字串
uj5u.com熱心網友回復:
問題是所有的雙引號。先做:
line = line.replaceAll("^\\s*\"([^\"]*)\"\\s*$", "$1")
uj5u.com熱心網友回復:
要洗掉直引號,請使用如下轉義語法:
"\""
要表示一年中的一周,請將ThreeTen-Extra添加到您的應用程式中作為其YearWeek類。
定義一個類來保存您決議的資料。如果類的主要目的是透明且不可變地傳遞資料,則將類定義為記錄。
這是一些未經測驗的示例代碼。
record Quote ( YearWeek yearWeek , int third , int fourth , int euros ) {}
List< Quote > quotes =
Files
.lines( … )
.map( string -> string.replace( "\"" , "" ).replace( " EUR" , "" ) )
.map( string -> string -> string.split( ";" )
.map( partsArray -> new Quote(
YearWeek.of( Integer.parseInt( partsArray[0] ) , Integer.parseInt( partsArray[1] ) ) ,
Integer.parseInt( partsArray[2] ) ,
Integer.parseInt( partsArray[3] ) ,
Integer.parseInt( partsArray[4] ) ,
)
.toList()
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/434763.html
