【问题标题】:Create a java calculator创建一个java计算器
【发布时间】:2015-11-07 16:43:24
【问题描述】:

我的作业中的一个问题是创建一个计算器程序来实现一个解决方案,该解决方案要求用户输入一行包含后缀表达式的文本。程序应验证输入,然后对其进行评估,以显示评估的表达式(使用中缀表示法)和结果。 如果验证失败,则应显示适当的错误消息。例如,错误:无效的表达式。

到目前为止,这是我的代码:(我如何更改代码,以便出现一个循环,在该循环中应反复提示用户输入表达式,直到他们输入一个空行,即在没有输入的情况下按回车键,此时程序应该终止吗?

import java.util.Scanner;

public class Calculator {

        public static void main(String[] args) {
            try (Scanner scanner = new Scanner(System.in)) {
                System.out.println("Enter a post-fix expression of the form 3 5 *:");
                double n1 = scanner.nextDouble();
                double n2 = scanner.nextDouble();
                String operation = scanner.next();

                switch (operation)  {
                case "+":
                    System.out.println("Your answer is " + (n1 + n2));
                    break;

                case "-":
                    System.out.println("Your answer is " + (n1 - n2));
                    break;

                case "/":
                    System.out.println("Your answer is " + (n1 / n2));
                    break;

                case "*":
                    System.out.println("Your answer is " + (n1 * n2));
                    break;

                }
            }
        }
}

【问题讨论】:

  • 您最初标记了此 JavaScript。 Java 和 JavaScript 不一样,请确保您了解其中的区别,以免将来混淆。
  • 您问过如何添加循环。如果您想在用户没有输入某些输入的情况下继续执行,您认为哪种循环比较合适?

标签: java


【解决方案1】:

如果我正确理解了您的要求,那么下一个代码应该可以正常工作。 它会检查你是否按下了回车。我也在检查异常。

import java.util.Scanner;

public class Calculator {

    public static void main(String[] args) {
        System.out.println("Enter a post-fix expression of the form 3 5 *:");
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        while (!line.equals("")) {
            try {
                Scanner scannerInternal = new Scanner(line);

                double n1 = scannerInternal.nextDouble();
                double n2 = scannerInternal.nextDouble();
                String operation = scannerInternal.next();
                switch (operation) {
                    case "+":
                        System.out.println("Your answer is " + (n1 + n2));
                        break;

                    case "-":
                        System.out.println("Your answer is " + (n1 - n2));
                        break;

                    case "/":
                        System.out.println("Your answer is " + (n1 / n2));
                        break;

                    case "*":
                        System.out.println("Your answer is " + (n1 * n2));
                        break;

                }
            }
            catch (Exception ex){
                System.out.println("Error: Invalid expression.");
            }
            line = scanner.nextLine();
        }
    }
}

【讨论】:

    【解决方案2】:

    在while循环中写入。

    while(true) {
       System.out.println("Enter a post-fix expression of the form 3 5 *:");
       double n1 = scanner.nextDouble();
       double n2 = scanner.nextDouble();
       String operation = scanner.next();
       switch (operation ) {
             case "*":
               // Do operation
               continue;
             case "+":
               // Do operation
               continue;
             case "":
                break;
        }
    }
    

    【讨论】:

    • 这会检查运算符在两次双打后是否为空。 (我提交了基本语法修复的编辑。)
    • @DavidDuncan 谢谢 :) .
    【解决方案3】:

    你可以用一个while循环来包装你的逻辑。比如:

    bool get_user_input = true;
    while(get_user_input){
    Scanner ... 
    .... switch(operation){
    ....}
    if(user_input_satisfies){
    get_user_input = false; //your finished getting input from scanner
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多