我做了一个 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?

你可能明白我是初学者,我知道我们并不是很受社区欢迎。 前一段时间我做了一个多功能计算器,现在我想扩展它。在这个问题中,我将只关注一个 class.

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

在这个Javaclass中,程序只能用两个数字求解方程。我想让它像标准计算器一样,您可以在其中输入任意数量的数字。我想这样做,直到用户键入 "done" 之类的内容并且应用程序将 return 到主菜单。 这可能是一个非常麻烦的问题,但请帮忙。如果您想查看整个应用程序:这里是 link

这会帮助你! :)

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