Java 在if/else语句中输入十进制值时出现奇怪的“错误”
我正在使用Netbeans。编程新手,今天刚开始使用java,有一个问题Java 在if/else语句中输入十进制值时出现奇怪的“错误”,java,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."
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)
我该怎么做才能使它适用于小数和分数呢?您有一个双变量,并且正在设置一个int。您必须使用函数,如下所示:
double numberOne = Double.parseDouble(reader.nextLine());
我希望它会对你有帮助 使用
new Double(1.25)
而不是
new Integer(1.25)
以避免此类错误。整数只能是整数,而双精度值可以是小数
就你而言
Double d = Double.parseDouble(reader.nextLine());
应该为您提供所需的值。如果读卡器是Scanner类型,则使用将值读取为double,并将其存储在double变量中
在此之后,读取该行以使用换行符:
double numberOne = reader.nextDouble();
reader.nextLine();
关于你的另一个问题:
我能做些什么使它与…一起工作。。。分数
您应该创建一个适当的类来存储分子和分母(int或long类型),这取决于您的设计。感谢您的帮助,当人们说java中有很多方法可以做一件事时,他们开始越来越多地意识到这一点。