簡體   English   中英

如何讓計算器程序對兩個以上的數字進行加減乘除

[英]How to get calculator program to add, subtract, multiply, divide more than two numbers

我制作了一個基本的計算器應用程序,它可以加、減乘或除兩個數字。 我正在嘗試改進程序,使其能夠'+' '-' '*' 或 '/' 不僅僅是兩個數字 這是到目前為止我已經完成的基本 java 計算器程序:

import java.util.Scanner;

public class Calculator {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("\nEnter first number: \n");
        double fnum = input.nextDouble();
        System.out.println("\nEnter an operation sign such as, '+', '-', '*', or '/', '=': \n");
        char operator = input.next().charAt(0);
        System.out.println("\nEnter second number: \n");
        double snum = input.nextDouble();
        input.close();

        switch(operator) {

            case '+':
                double answer = fnum + snum;
                System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer);
                break;

            case '-':
                double answer1 = fnum - snum;
                System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer1);
                break;

            case '*':
                double answer2 = fnum * snum;
                System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer2);
                break;

            case '/':
                double answer3 = fnum / snum;
                System.out.println("\n" + fnum + " " + operator + " " + snum + " = " + answer3);
                break;

            default:
                System.out.println("Wrong choice for operator. ");
                break;
        }
    }
}

為了實現這一點,我認為可能在 sysout“Enter operator”行之前必須有一個循環,我試圖將一個 do while 循環與 while 部分合並為 (operator.= '=') 並且沒有成功. 哦,是的,我需要改寫“輸入第二個數字”系統輸出。 提前感謝您的任何建議!

**這是我當前計算器程序的示例 output,然后是我想要的計算器程序的 I output 示例。

電流計算器 output:

8.0 + 2.0 = 10.0

我正在尋找計算器程序來做什么:

8.0 - 4.0 * 10.0 = 40.0

注意:當我有時間時,我自己正在積極尋求解決方案。 如果你不想幫助我,那很好。 我認為我的問題是明確的、有效的,沒有必要根據社區准則刪除。 謝謝

下面的代碼沒有實現任何錯誤檢查,更重要的是,它沒有考慮運算符的優先級——這就是為什么最好有一個解析器——但可以給你一個想法。

  • 值和運算符是在循環中獲得的,該循環在用戶輸入=符號之前有效

  • 輸入的值和運算符存儲在列表numbersoperators

  • 退出循環后,對存儲的值執行操作


public class Calculator {

    public static void main(String[] args) {
        ArrayList<Double> numbers = new ArrayList<Double>();
        ArrayList<Character> operators = new ArrayList<Character>();
         
        Scanner scanner = new Scanner(System.in);
        try {
            do {
                System.out.println("\nEnter a number: \n");
                numbers.add(scanner.nextDouble());
                System.out.println("\nEnter an operation sign such as, '+', '-', '*', or '/', '=': \n");
                char operator = scanner.next().charAt(0);
                if (operator == '=')
                    break;
                operators.add(operator);
            } while (true);
        } finally {
            scanner.close();
        }
        
        Double answer = numbers.remove(0);
        String resultText = "" + answer;
        
        for (int i=0; i<operators.size(); ++i) {
            char operator = operators.get(i);
            
            Double number = numbers.get(i);
            
            switch(operator) {

                case '+':
                    answer += number;
                    break;
    
                case '-':
                    answer -= number;
                    break;
    
                case '*':
                    answer *= number;
                    break;
    
                case '/':
                    answer /= number;
                    break;
    
                default:
                    System.out.println("Wrong choice for operator. ");
                    break;
            }
            
            resultText += " " + operator + " " + number;
        }
        
        System.out.println("\n" + resultText + " = " + answer);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM