只是从 Python 切换到 Java 并且在读取用户输入时遇到了一些问题。我在以下代码中有两个问题:(1)为什么我关闭扫描仪后它无法正常工作(如果跳过关闭后,这是一个问题吗?)(2)为什么两个简单数字的总和会导致不准确的答案3.0300000000000002?
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
double result = d1 + d2;
System.out.println("The answer is: " + result);
}
private static String getInput(String prompt){
System.out.print(prompt);
Scanner scan = new Scanner(System.in);
String input = "DEFAULT";
try{
input = scan.nextLine();
}
catch (Exception e){
System.out.println(e.getMessage());
}
//scan.close();
return input;
}
}
这是注释掉扫描关闭的输出:
Enter a numeric value: 1.01
Enter a numeric value: 2.02
The answer is: 3.0300000000000002 (weird output)
如果我取消对 scan.close() 的注释,您将无法键入第二个数字并附加错误消息:
Enter a numeric value: 1.01
Enter a numeric value: No line found
Exception in thread "main" java.lang.NumberFormatException: For input string: "DEFAULT"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Double.parseDouble(Double.java:540)
at HelloWorld.main(HelloWorld.java:10)
如果你们中的任何人能指出我正确的地方或给我一些关于这两个问题是如何产生的提示,将不胜感激!