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() ;
}