Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 将字符串解析为浮点值时出现NumberFormatException_Java_Parsing_Generics_Interface_Java.lang.class - Fatal编程技术网

Java 将字符串解析为浮点值时出现NumberFormatException

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 我删除了整数解析器,程序运行良好。我很困惑,为什么只有当我输入十进制值时才会出现错误,我希望有人能帮我指出到底是什么导致了异

我很清楚这个程序是完全不切实际的,我写它只是为了练习解析、泛型和接口。我尝试了Integer,但在尝试Float和Double.add()函数时,出现了3个错误:

位于java.lang.NumberFormatException.forInputString

位于java.lang.Integer.parseInt

位于java.lang.Integer.valueOf

我删除了整数解析器,程序运行良好。我很困惑,为什么只有当我输入十进制值时才会出现错误,我希望有人能帮我指出到底是什么导致了异常,这样我就可以避免将来出现类似这样的错误,因为删除整数解析器会从IntegerN类中删除任何功能

此外,如果任何人出于任何原因需要FloatN类:

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可以读取整数,但不能反过来读取