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

相關問題