Java 将字符串解析为浮点值时出现NumberFormatException
我很清楚这个程序是完全不切实际的,我写它只是为了练习解析、泛型和接口。我尝试了Integer,但在尝试Float和Double.add()函数时,出现了3个错误: 位于java.lang.NumberFormatException.forInputString 位于java.lang.Integer.parseInt 位于java.lang.Integer.valueOf 我删除了整数解析器,程序运行良好。我很困惑,为什么只有当我输入十进制值时才会出现错误,我希望有人能帮我指出到底是什么导致了异常,这样我就可以避免将来出现类似这样的错误,因为删除整数解析器会从IntegerN类中删除任何功能 此外,如果任何人出于任何原因需要FloatN类:Java 将字符串解析为浮点值时出现NumberFormatException,java,parsing,generics,interface,java.lang.class,Java,Parsing,Generics,Interface,Java.lang.class,我很清楚这个程序是完全不切实际的,我写它只是为了练习解析、泛型和接口。我尝试了Integer,但在尝试Float和Double.add()函数时,出现了3个错误: 位于java.lang.NumberFormatException.forInputString 位于java.lang.Integer.parseInt 位于java.lang.Integer.valueOf 我删除了整数解析器,程序运行良好。我很困惑,为什么只有当我输入十进制值时才会出现错误,我希望有人能帮我指出到底是什么导致了异
System.out.println("Enter a number: ");
String in1 = input.nextLine();
Integer input1 = Integer.valueOf(in1);
Float input2 = Float.parseFloat(in1);
Double input3 = Double.valueOf(in1).doubleValue();
System.out.println();
System.out.println("Enter another number: ");
String in2 = input.nextLine();
Integer input21 = Integer.valueOf(in2);
Float input22 = Float.parseFloat(in2);
Double input23 = Double.valueOf(in2).doubleValue();
FloatN fco = new FloatN();
System.out.println();
System.out.println("The sum of both of your numbers is: " + fco.add(input2, input22));
done = true;
公共静态类FloatN实现求和{
公共浮点数({}
公共浮动添加(浮动a、浮动b)
{
返回a+b;
}
}
Summization是一个带有add()方法的通用接口
提前感谢。因为
Integer.valueOf(in2)代码>此行将提供NumberFormatException,您可以使用float
和double
public static class FloatN implements Summization<Float>{
public FloatN(){}
public Float add(Float a, Float b)
{
return a + b;
}
}
参见@因为整型.valueOf(in2)代码>此行将提供NumberFormatException,您可以使用float
和double
public static class FloatN implements Summization<Float>{
public FloatN(){}
public Float add(Float a, Float b)
{
return a + b;
}
}
请参见@可能添加不包含可解析浮点或为空的字符串
可能添加不包含可解析浮点或为null的字符串
如果您输入一个十进制值作为输入,Integer.parseInt()
方法将无法解析它。如果您仍然希望将它们全部包含在代码中,则必须获取该Float
值的int值。您可以使用intValue()
方法:
NullPointerException - if the string is null
NumberFormatException - if the string does not contain a parsable float.
如果您输入一个十进制值作为输入,Integer.parseInt()
方法将无法解析它。如果您仍然希望将它们全部包含在代码中,则必须获取该Float
值的int值。您可以使用intValue()
方法:
NullPointerException - if the string is null
NumberFormatException - if the string does not contain a parsable float.
NumberFormatException出现在整数解析器中,如果输入包含decimal,则不会出现在Double和Float解析器中
在这种情况下,您可以使用和解析来获取十进制数的整数部分:
Float input2 = Float.parseFloat(in1);
Integer input1 = Integer.valueOf(input2.intValue());
NumberFormatException出现在整数解析器中,如果输入包含decimal,则不会出现在Double和Float解析器中
在这种情况下,您可以使用和解析来获取十进制数的整数部分:
Float input2 = Float.parseFloat(in1);
Integer input1 = Integer.valueOf(input2.intValue());
当测试IntegerN对象时,我的输入是5,7,当测试floatn时,我的输入是7.5,8.0。我理解,当测试IntegerN对象时,我的输入是5,7,当测试floatnahh时,我的输入是7.5,8.0。所以所有的整数都是浮点数,但不是所有的浮点数都是整数,所以当我使用for Integer的值来解析字符串时,它尝试读取一个浮点数,但它不能,但是浮点解析器和双精度解析器可以相互读取(直到某一点)。好的,我现在明白了,谢谢大家的帮助。我想我必须记住,Float和Double可以读取整数,但我知道不是这样。所以所有的整数都是浮点数,但不是所有的浮点数都是整数,所以当我使用for Integer的值来解析字符串时,它尝试读取一个浮点数,但它不能,但是浮点解析器和双精度解析器可以相互读取(直到某一点)。好的,我现在明白了,谢谢大家的帮助。我想我必须记住Float和Double可以读取整数,但不能反过来读取