亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“java.lang.數字格式異常:空字符串”,其中包含一個不為空的字符串

“java.lang.數字格式異常:空字符串”,其中包含一個不為空的字符串

慕標5832272 2022-09-28 09:45:10
我目前正在課外做一個個人項目,在閱讀鏈接列表中的文本文件時遇到了一些問題。當閱讀第一個雙打時,我得到一個java.lang.NumberFormatException: empty String錯誤。我在程序中添加了一條打印行,將我試圖解析的內容打印成雙精度值,并且變量實際上不是空的,實際上是雙精度值。就像我上面說的,我添加了一個打印行來打印出我試圖解析為雙精度的字符串,這似乎沒問題。下面是讀入并拆分為我正在打印的數組的字符串:500.0 % 04/05/2019 % This is paycheck 1 % true % 49.5我必須將兩個字符串解析為雙精度值,而我只遇到第一個字符串的問題。當我注釋掉第一個正在解析的雙精度值時,程序運行沒有問題。以下是從運行到程序的完整輸出 *File loading*    *500.0*    *Exception in thread "main" java.lang.NumberFormatException: empty String*        *at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)*        *at sun.misc.FloatingDecimal.parseDouble(Unknown Source)*        *at java.lang.Double.parseDouble(Unknown Source)*        *at fileHandling.readPaycheck(fileHandling.java:194)*        *at UserMenu.main(UserMenu.java:20)*問題發生在以下代碼行的“將數組拆分為其適當的臨時變量”部分中:payCheckAmount = Double.parseDouble(tempArray[0]);這是此方法的代碼public void readPaycheck(LinkedList<PayCheck> paycheck) throws IOException {        // Declare Variables        Scanner sc = new Scanner(payChecks); // Scanner used to read in from the payChecks text file        String temp; // A string used to hold the data read in from the file temporarily        String[] tempArray; // A String array used to temporarily hold data from the text file        double payCheckAmount; // A double holding the amount of the paycheck        String paycheckDate; // A string holding the date of the paycheck        String description; // A string holding a description of the paycheck        boolean payCheckSplit; // A boolean stating if the paycheck has been split or not        double amountUnSplit; // A double        // A while loop that runs while the text file still has data in it        while (sc.hasNextLine()) {            // Reading in a new line from the paycheck file            temp = sc.nextLine();            // Splitting the line into an array            tempArray = temp.split(" % ");        }    }
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

您的文本文件可能包含空行。您可以刪除文本文件中的新行,更改文本文件的創建方式,或者在閱讀文本文件時跳過空行。


這是跳過空行的方法:


while (sc.hasNextLine()) {


        String temp = sc.nextLine();


        if (temp.equals("")) { continue; } // <--- notice this line

        String[] tempArray = temp.split(" % ");


        System.out.println(tempArray[0]);


        // Splitting the array into its appropriate temp variables

        double payCheckAmount = Double.parseDouble(tempArray[0]);

        String paycheckDate = tempArray[1];

        String description = tempArray[2];

        boolean payCheckSplit = Boolean.parseBoolean(tempArray[3]);

        double amountUnSplit = Double.parseDouble(tempArray[4]);


    }

}


查看完整回答
反對 回復 2022-09-28
  • 1 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號