簡體   English   中英

java.lang.NumberFormatException:對於輸入字符串:“”

[英]java.lang.NumberFormatException: For input string: “ ”

當我嘗試這樣做時:

total = Integer.parseInt(dataValues_fluid[i]) + total;

它會給我一個錯誤信息

java.lang.NumberFormatException: For input string: " "

一些值是“”。 這就是為什么它給了我。 但我試過了

int total = 0;
for(int i=0; i<counter5; i++){

if(dataValues_fluid[i]==" "){dataValues_fluid[i]="0";}

total = Integer.parseInt(dataValues_fluid[i]) + total;
}

我仍然得到相同的java.lang.NumberFormatException錯誤。

我假設dataValues_fluid[]是一個String數組。 如果是這種情況,則不能使用==比較運算符 - 您需要使用if(dataValues_fluid[i].equals(" "))

所以你的parseInt()試圖解析空格字符,這會導致你的NumberFormatException

而不是使用==將字符串比較為" " ,而是執行此操作:

if (" ".equals(dataValues_fluid[i]) { dataValues_fluid[i] = "0"; }

注意使用==.equals()與字符串之間的區別。 ==不能用於比較Java中的字符串 - 您必須使用.equals()方法。

http://leepoint.net/notes-java/data/expressions/22compareobjects.html

您需要使用equals比較字符串:

if(dataValues_fluid[i].equals(" ")){dataValues_fluid[i]="0";}

一般來說,更優雅的方法是捕獲NumberFormatException並在這種情況下將值設置為0。

您可以在try / catch塊中包含添加到總計的行,因此將忽略任何無效的數字(如果您想要了解錯誤,可以記錄錯誤)。

try {
    total += Integer.parseInt(dataValues_fluid[i]);
} catch (NumberFormatException ignored) {}

這樣你就會忽略任何非數字值,不僅是空格,你的程序也會運行良好(同樣安全,記錄該異常或在發生時進行一些雙重檢查)。

如果數字無效,則不會添加任何內容,因此您的程序將按預期執行。

我認為Andy White的鏈接對於你的想法已經足夠了,但是如果你需要另外詳細解釋為什么“==”運算符不起作用以及有什么替代方法(實際上還有一些),請查看此鏈接: http:// www.devdaily.com/java/edu/qanda/pjqa00001.shtml

以下是其他相同方法的API文檔信息: http//download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#equals%28java.lang.Object%29

您可以使用此代碼。 問題是驗證您的病情的條件。 所以我使用tringle驗證來優化一些內存。

int total = 0;
for(int i=0; i<counter5; i++){
total += Integer.parseInt(dataValues_fluid[i].equals(" ") ? "0" : dataValues_fluid[i]) ;
}

在方法中,你可以使用“拋出NumberFormatException”

try {
  int total = 0;
  for(int i=0; i<counter5; i++){
   total += Integer.parseInt(dataValues_fluid[i].equals(" ") ? "0":dataValues_fluid[i]);
  }
}catch(NumberFormatException e){
  e.printStackTrace() ; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM