0

你可能明白我是初学者,而且我知道我们并不是真的被社区所喜欢。 我做了一个多用途计算器,而现在我想扩大它。在这个问题中,我将只关注一个班级。我做了一个CLI计算器,我在想,如何让程序接受数字,直到用户输入停止命令?

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类中,程序只能用两个数来求解方程。我想使它像一个标准的计算器,在那里你可以尽可能多地输入数字。我想这样做,直到用户输入类似“完成”的内容,应用程序将返回到主菜单。 这可能是一个非常不好的问题,但请大家帮忙。如果你想看到整个应用程序:这里的link

+0

该代码将完全不同。您希望用户一次添加表达式或提出问题,如输入下一个运算符然后输入下一个数字等等 –

+0

@HarishBarma但我该如何让用户一次添加表达式? – Ribchinski

+0

这是可能的。 –

回答

1

这将帮助你! :)

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

谢谢。我仍然没有学会如何使用“try”循环,所以我没有使用它。另外,我仍然遇到“私人”类和变量的问题,所以我将它们公诸于众。 – Ribchinski

+0

您的欢迎。 _更多关于异常处理_ - [Here](https://beginnersbook.com/2013/04/try-catch-in-java/) 而且你应该总是让实例变量** private ** – Yazeen

相关问题