为什么我的 Java 计算器中的 * 不起作用
Why does * in my Java calculator not work
所以我正在开发一个非常简单的 java 计算器,没有任何扫描仪。
计算器可以计算+、-、/和*
每个运算符都有效,但 * 除外,但我不明白为什么
public class Calculator2 {
public static void main(String[] args){
double ersteZahl = Double.parseDouble(args[0]);
double zweiteZahl = Double.parseDouble(args[2]);
char operator = args[1].charAt(0);
switch (operator) {
case '+':
System.out.println(ersteZahl + zweiteZahl);
break;
case '-':
System.out.println(ersteZahl - zweiteZahl);
break;
case '*':
System.out.println(ersteZahl * zweiteZahl);
break;
case '/':
System.out.println(ersteZahl / zweiteZahl);
break;
}
}
}
这是我尝试乘法时的错误
PS C:\Users\Besitzer\onedrive\desktop\java> java Calculator2 10 * 2
Exception in thread "main" java.lang.NumberFormatException: For input string: "Calculator.java"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:651)
at Calculator2.main(Calculator2.java:10)
我会说问题不在你的程序,而是在你的操作系统(OS)。
我假设您是从 Linux shell 执行此操作的,尽管其他 OSes 可能有类似的问题。
当您 运行 命令行 java Calculator2 10 * 2
时, OS 会将 *
字符扩展到当前文件夹中的所有文件名中。这发生在之前 你的程序甚至开始 运行ning 所以当你的主函数被调用时,args
将类似于 [10
,Calculator2.java
、mynotes.txt
、some_other_file.obj
、xyz.bat
、2
]。通常这就是您想要的:您不希望 rm *
删除一个名为 *
的文件,但实际上让它对文件夹中的所有文件名起作用。
您可以通过编写一个打印参数的测试应用程序来验证这一点,实际上您无论如何都应该添加错误处理,这样程序就不会崩溃,而是显示类似 计算无效:参数需要一个数字2 但得到 'mynotes.txt')
尝试 运行将其设置为 java Calculator 10 '*' 2
。或者在您的代码中使用另一个字符,例如 x
进行乘法运算。
所以我正在开发一个非常简单的 java 计算器,没有任何扫描仪。 计算器可以计算+、-、/和* 每个运算符都有效,但 * 除外,但我不明白为什么
public class Calculator2 {
public static void main(String[] args){
double ersteZahl = Double.parseDouble(args[0]);
double zweiteZahl = Double.parseDouble(args[2]);
char operator = args[1].charAt(0);
switch (operator) {
case '+':
System.out.println(ersteZahl + zweiteZahl);
break;
case '-':
System.out.println(ersteZahl - zweiteZahl);
break;
case '*':
System.out.println(ersteZahl * zweiteZahl);
break;
case '/':
System.out.println(ersteZahl / zweiteZahl);
break;
}
}
}
这是我尝试乘法时的错误
PS C:\Users\Besitzer\onedrive\desktop\java> java Calculator2 10 * 2
Exception in thread "main" java.lang.NumberFormatException: For input string: "Calculator.java"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:651)
at Calculator2.main(Calculator2.java:10)
我会说问题不在你的程序,而是在你的操作系统(OS)。
我假设您是从 Linux shell 执行此操作的,尽管其他 OSes 可能有类似的问题。
当您 运行 命令行 java Calculator2 10 * 2
时, OS 会将 *
字符扩展到当前文件夹中的所有文件名中。这发生在之前 你的程序甚至开始 运行ning 所以当你的主函数被调用时,args
将类似于 [10
,Calculator2.java
、mynotes.txt
、some_other_file.obj
、xyz.bat
、2
]。通常这就是您想要的:您不希望 rm *
删除一个名为 *
的文件,但实际上让它对文件夹中的所有文件名起作用。
您可以通过编写一个打印参数的测试应用程序来验证这一点,实际上您无论如何都应该添加错误处理,这样程序就不会崩溃,而是显示类似 计算无效:参数需要一个数字2 但得到 'mynotes.txt')
尝试 运行将其设置为 java Calculator 10 '*' 2
。或者在您的代码中使用另一个字符,例如 x
进行乘法运算。