使用多个布尔类型的计算器的不同方法

问题描述 投票:-4回答:1

我尝试在一个“if”命令上使用多个布尔类型创建一个计算器。我还尝试使用ASCII表中的数字42(*),43(+),45( - )和47(/)而不是符号。现在,对于一些resson而言,它不兼容数字和符号,我想知道原因。我知道如何使用不同的方法解决问题,但我想了解为什么我的程序不工作的逻辑,感谢任何可以提供帮助的人!

其中一种不同的方法:[Trouble with a simple calculator code (Java)

    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");
        }

    }
java if-statement calculator boolean-logic
1个回答
1
投票

最初的问题是使用行System.out.println(num5+action+num6+"=");,您尝试从2个双精度和一个字符形成一个字符串。这将在转换为String之前执行数值计算。要连接形成一个String,你可以简单地使用System.out.println(num5 + "" + action + "" + num6 + "" + "=");

你还问过,如果没有if语句的语气,是否有更好的方法来解决这个问题 - 不幸的是,不是很优雅。您可以使用switch语句使其更易读,如下所示。有一个您可能感兴趣的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;
}
© www.soinside.com 2019 - 2024. All rights reserved.