繁体   English   中英

我做了一个CLI计算器,我想知道,在用户输入停止命令之前,如何让程序不确定地接受数字?

[英]I made a CLI calculator and I am wondering, how can I have the program accept numbers indefinetly until the user inputs a stop command?

您可能了解我是一个初学者,并且我知道我们社区并不十分喜欢我们。 不久前我做了一个多功能计算器,现在我想扩展它。 在这个问题上,我将只关注一个班级。

import java.util.Scanner;

public class Calculator {

    public static void calcMenu(Scanner input){
        Scanner oper = new Scanner(System.in);
        System.out.println("Please input the First number:");
        double anum = input.nextDouble();

        System.out.println("Please input on of the following operations:");
        System.out.println("+");
        System.out.println("-");
        System.out.println("*");
        System.out.println("/");
        String equ = oper.nextLine();

        System.out.println("Please input the Second number:");
        double bnum = input.nextDouble();

        switch (equ){
        case "+":
            System.out.println(anum + bnum);
            break;

        case "-":
            System.out.println(anum - bnum);
            break;

        case "*":
            System.out.println(anum * bnum);
            break;

        case "/":
            System.out.println(anum / bnum);
            break;
        }
    }
}

在此Java类中,程序只能用两个数字求解方程。 我想像在标准计算器中一样,可以在其中输入任意数量的数字。 我想这样做,直到用户键入“ done”之类的内容,应用程序将返回到主菜单。 这可能是一个非常棘手的问题,但请提供帮助。 如果您想查看整个应用程序:这是链接

这将帮助您! :)

import java.util.InputMismatchException;
import java.util.Scanner;

public class Calculator {

private static double answer;
private static boolean done = false;
private static Scanner in = new Scanner(System.in);

   public static void main(String[] args) {

       try {
           new Calculator().calcExpression();
       } catch (InputMismatchException e) {
           System.out.println("An error occurred. ");
       }
   }

   private void calcExpression() throws InputMismatchException {

       System.out.println("Enter Your Expression Here:");

       System.out.print("Num: ");
       double firstNum = in.nextDouble();
       in.nextLine();

       while (!done) {

           System.out.print("Operator: ");
           String operand = in.nextLine();

           if (operand.equals("=")) {
               break;
           }

           System.out.print("Num: ");
           double secondNum = in.nextDouble();
           in.nextLine();

           calculate(firstNum, operand, secondNum);
           firstNum = answer;
       }

       System.out.printf("Answer is %.2f", answer);
   }

   private void calculate(double num1, String equ, double num2) {

       switch (equ)

       {
           case "/":
               answer = (num1 / num2);
               break;

           case "*":
               answer = (num1 * num2);
               break;

           case "+":
               answer = (num1 + num2);
               break;

           case "-":
               answer = (num1 - num2);
               break;

           case "=":
               done = true;
               break;
       }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM