奇怪"错误"在if / else语句中输入十进制值时

时间:2015-08-23 02:31:44

标签: java

我正在使用Netbeans。编程新手,今天刚刚开始java并有一个问题。

System.out.println("Type a number: ");
    double numberOne = Integer.parseInt(reader.nextLine());
            if (numberOne > 0) {
                System.out.println("The number " + numberOne + " is positive.");
            } else {
                System.out.println("The number " + numberOne + " isn't positive.");
            }

输入整数,无论​​是正数还是负数,都会显示正确的信息。但是,如果我输入类似.25或7.29的内容,则会显示,但不会显示任何消息:

Type a number: 
7.29
Exception in thread "main" java.lang.NumberFormatException: For input string: "7.29"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at PositiveValue.main(PositiveValue.java:9)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

我可以做些什么来使其与小数和分数一起使用?

3 个答案:

答案 0 :(得分:2)

您有一个double变量,并且您正在设置int。您必须使用Double.parseDouble函数,如下所示:

double numberOne = Double.parseDouble(reader.nextLine());

我希望它会对你有所帮助!

答案 1 :(得分:1)

使用

new Integer(1.25)

而不是

Double d = Double.parseDouble(reader.nextLine());

避免这些错误。整数只能是整数,而Double值可以是小数。

在你的情况下

{{1}}

应该给你你想要的价值。

答案 2 :(得分:1)

如果reader的类型为Scanner,则请使用Scanner#nextDouble将值读为double,并将其存储在double变量中。

在此之后,读取该行以使用换行符:

double numberOne = reader.nextDouble();
reader.nextLine();

对于您的其他问题:

  

我可以做些什么来使它与(......)分数一起使用?

你应该创建一个适当的类来存储你的分子和分母,类型intlong,这取决于你的设计。