Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NumberFormatException:对于输入字符串:"&引用;_Java_Numberformatexception - Fatal编程技术网

java.lang.NumberFormatException:对于输入字符串:"&引用;

java.lang.NumberFormatException:对于输入字符串:"&引用;,java,numberformatexception,Java,Numberformatexception,当我尝试这样做时: total=Integer.parseInt(dataValues\u fluid[i])+total 它会给我一个错误信息 java.lang.NumberFormatException: For input string: " " 某些值为“”。所以这就是为什么它给了我。但是我试过了 int total = 0; for(int i=0; i<counter5; i++){ if(dataValues_fluid[i]==" "){dataValues_flui

当我尝试这样做时:

total=Integer.parseInt(dataValues\u 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;
}
int-total=0;

对于(int i=0;i我假设
dataValues\u fluid[]
是一个
字符串的数组。如果是这种情况,您不能使用
=
比较运算符-您需要使用
If(dataValues\u fluid[i]。等于(“”)


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

而不是使用
==
将字符串与
进行比较,请执行以下操作:

if (" ".equals(dataValues_fluid[i]) { dataValues_fluid[i] = "0"; }
请注意对字符串使用
=
.equals()
之间的区别。
=
在Java中不适用于比较字符串-您必须使用
.equals()
方法


您需要使用
等于来比较字符串:

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

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

您可以将添加到总数的行包装在try/catch块中,因此任何无效的数字都将被忽略(如果您希望得到通知,可以记录错误)

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


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

我认为Andy White的链接对于您的purose来说已经足够了,但是如果您需要另一个详细解释“==”运算符不起作用的原因以及有哪些替代方法(实际上有一些),请查看此链接:

以下是关于其他等效方法的API文档信息: 您可以使用此代码。 问题是验证您的条件的条件。 所以我使用tringle验证来优化一些内存

int-total=0;

对于(int i=0;i您的输入中是否也有“”(不是空格而是null或空字符串)?是的,我想捕获numberformatexception。并将其设置为等于0
try {
    total += Integer.parseInt(dataValues_fluid[i]);
} catch (NumberFormatException ignored) {}
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() ; 
}