4

当我尝试这样做时:

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错误。

4

6 回答 6

7

我假设这dataValues_fluid[]是一个Strings数组。如果是这种情况,则不能使用==比较运算符 - 您需要使用if(dataValues_fluid[i].equals(" ")).

因此,您parseInt()正在尝试解析空格字符,这会导致您的NumberFormatException.

于 2011-03-31T22:37:06.493 回答
1

==与其使用将字符串与 进行比较,不如" "执行以下操作:

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

==注意 using和.equals()with 字符串 之间的区别。==不适用于比较 Java 中的字符串 - 您必须使用该.equals()方法。

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

于 2011-03-31T22:37:13.950 回答
1

您需要使用以下方式比较字符串equals

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

但总的来说,更优雅的方法是捕获 NumberFormatException 并将值设置为 0 在这种情况下。

于 2011-03-31T22:37:23.390 回答
1

我认为 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

于 2011-04-01T00:44:19.397 回答
0

您可以将增加总数的行包装在 try/catch 块中,因此任何无效数字都将被忽略(如果您想了解错误,可以记录错误)。

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

这样,您将忽略任何非数字值,不仅是空格,而且您的程序将运行良好(为了安全起见,记录该异常或在发生异常时执行一些双重检查)。

如果数字无效,则不会将任何内容添加到您的总数中,因此您的程序将按预期执行。

于 2011-03-31T22:43:47.823 回答
0

您可以使用此代码。问题是验证您的条件的条件。所以我使用三元验证来优化一些内存。

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() ; 
}
于 2019-09-09T07:58:31.960 回答