使用多种布尔类型的计算器的不同方法
Different Method For a Calculator Using Multiple Boolean Types
我试图在一个 "if" 命令上使用多种布尔类型创建一个计算器。我还尝试使用 ASCII table 中的数字 42(*)、43(+)、45(-) 和 47(/) 而不是符号。现在,对于某些结果,它不适用于数字和符号,我想知道为什么。我知道如何使用不同的方法解决问题,但我想了解我的程序无法正常工作的逻辑,感谢任何可以提供帮助的人!
其中一种不同的方法:
[
package RemoteSystemsTempFiles;
import java.util.Scanner;
public class SecondLesson2 {
public static void main(String[] args) {
System.out.println("Print an equation with +,-,*,/");
Scanner reader=new Scanner(System.in);
double num5=reader.nextDouble();
char action=reader.next().charAt(0);
double num6=reader.nextDouble();
if (action=='+' || action=='-' || action=='*' || action=='/')
{
System.out.println(num5+action+num6+"=");
}
else System.out.println("You haven't printed it correctly");
}
}
最初的问题出在 System.out.println(num5+action+num6+"=");
行,您在该行中尝试从 2 个双精度数和一个字符组成一个字符串。这将在转换为字符串之前执行数值计算。要连接形成一个字符串,您可以简单地使用 System.out.println(num5 + "" + action + "" + num6 + "" + "=");
您还询问是否有更好的方法来解决没有 if 语句的方程式 - 不幸的是不是很优雅。您可以使用 switch 语句使其更易读,如下所示。您可能会对 Java 的 JavaScript ScriptEngine 库感兴趣,但是如果您知道输入是什么,那么 Switch 语句就和您得到的一样好。
public static double doOperation (double x, double y, char op) {
switch (op) {
case '+': return x + y;
case '-': return x - y;
case '/': return x/y;
case '*': return x*y;
}
return 0;
}
我试图在一个 "if" 命令上使用多种布尔类型创建一个计算器。我还尝试使用 ASCII table 中的数字 42(*)、43(+)、45(-) 和 47(/) 而不是符号。现在,对于某些结果,它不适用于数字和符号,我想知道为什么。我知道如何使用不同的方法解决问题,但我想了解我的程序无法正常工作的逻辑,感谢任何可以提供帮助的人!
其中一种不同的方法:
[
package RemoteSystemsTempFiles;
import java.util.Scanner;
public class SecondLesson2 {
public static void main(String[] args) {
System.out.println("Print an equation with +,-,*,/");
Scanner reader=new Scanner(System.in);
double num5=reader.nextDouble();
char action=reader.next().charAt(0);
double num6=reader.nextDouble();
if (action=='+' || action=='-' || action=='*' || action=='/')
{
System.out.println(num5+action+num6+"=");
}
else System.out.println("You haven't printed it correctly");
}
}
最初的问题出在 System.out.println(num5+action+num6+"=");
行,您在该行中尝试从 2 个双精度数和一个字符组成一个字符串。这将在转换为字符串之前执行数值计算。要连接形成一个字符串,您可以简单地使用 System.out.println(num5 + "" + action + "" + num6 + "" + "=");
您还询问是否有更好的方法来解决没有 if 语句的方程式 - 不幸的是不是很优雅。您可以使用 switch 语句使其更易读,如下所示。您可能会对 Java 的 JavaScript ScriptEngine 库感兴趣,但是如果您知道输入是什么,那么 Switch 语句就和您得到的一样好。
public static double doOperation (double x, double y, char op) {
switch (op) {
case '+': return x + y;
case '-': return x - y;
case '/': return x/y;
case '*': return x*y;
}
return 0;
}