Java 高级计算器。实现多个操作数

Java 高级计算器。实现多个操作数,java,Java,需要一种方法来完成我的“高级”计算器。我一直在头脑风暴循环,但我自己搞糊涂了。关于如何实现数字的操作数而不只是嵌套一堆if语句和硬编码的任何想法 import java.util.*; 公共类计算器{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("welcome to your personal calculator. is

需要一种方法来完成我的“高级”计算器。我一直在头脑风暴循环,但我自己搞糊涂了。关于如何实现数字的操作数而不只是嵌套一堆if语句和硬编码的任何想法

import java.util.*;
公共类计算器{

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    System.out.println("welcome to your personal calculator. is your problem simple or advanced(multiple calculations)\n"
            + "Type 1 for simple or 2 for advanced");
    int choice = scan.nextInt();
    if(choice == 1){
        System.out.println("Simple equation");

        System.out.println("Enter the first number");
        int firstnum = scan.nextInt();
        System.out.println("Enter the second number");
        int secondnum = scan.nextInt();
        System.out.println("are you adding, subtracting multiplying or dividing? ENTER +,*,-, or /");
        String operand = scan.next();
        if(operand.equals("+")){
            int solution = firstnum + secondnum;
            System.out.println(firstnum + operand + secondnum + "=" + solution);
        }
        else if (operand.equals("*")){
            int solution = firstnum * secondnum;
            System.out.println(firstnum + operand + secondnum + "=" + solution);
        }
        else if(operand.equals("-")){
            int solution = firstnum - secondnum;
            System.out.println(firstnum + operand + secondnum + "=" + solution);
        }
        else if(operand.equals("/")){
            int solution = firstnum / secondnum;
            System.out.println(firstnum + operand + secondnum + "=" + solution);
        }
        else{
            System.out.println("Did not recognize operation type please restart program.");
            return;
        }

        }

    else if(choice == 2){
        System.out.println("Advanced equation");
        System.out.println("How many numbers are in your equation? max of 7\n"
                + "operands are chosen by typing +,-,*,or /");
        int numofnumbers = scan.nextInt();
        if(numofnumbers == 2){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter operand");
            String operand = scan.next();
            if(operand.equals("+")){
                int solution = firstnum + secondnum;
                System.out.println(firstnum + operand + secondnum + "=" + solution);
            }
            else if (operand.equals("*")){
                int solution = firstnum * secondnum;
                System.out.println(firstnum + operand + secondnum + "=" + solution);
            }
            else if(operand.equals("-")){
                int solution = firstnum - secondnum;
                System.out.println(firstnum + operand + secondnum + "=" + solution);
            }
            else if(operand.equals("/")){
                int solution = firstnum / secondnum;
                System.out.println(firstnum + operand + secondnum + "=" + solution);
            }
            else{
                System.out.println("Did not recognize operation type please restart program.");
                return;
            }

        }
        else if(numofnumbers == 3){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter thir num");
            int thirdnum = scan.nextInt();
        }
        else if(numofnumbers == 4){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter third num");
            int thirdnum = scan.nextInt();
            System.out.println("enter fourth num");
            int fourthnum = scan.nextInt();
        }
        else if(numofnumbers == 5){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter third num");
            int thirdnum = scan.nextInt();
            System.out.println("enter fourth num");
            int fourthnum = scan.nextInt();
            System.out.println("enter fifth num");
            int fifthnum = scan.nextInt();
        }
        else if(numofnumbers == 6){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter third num");
            int thirdnum = scan.nextInt();
            System.out.println("enter fourth num");
            int fourthnum = scan.nextInt();
            System.out.println("enter fifth num");
            int fifthnum = scan.nextInt();
            System.out.println("enter sixth num");
            int sixthnum = scan.nextInt();
        }
        else if(numofnumbers == 7){
            System.out.println("enter first num");
            int firstnum = scan.nextInt();
            System.out.println("enter second num");
            int secondnum = scan.nextInt();
            System.out.println("enter third num");
            int thirdnum = scan.nextInt();
            System.out.println("enter fourth num");
            int fourthnum = scan.nextInt();
            System.out.println("enter fifth num");
            int fifthnum = scan.nextInt();
            System.out.println("enter sixth num");
            int sixthnum = scan.nextInt();
            System.out.println("enter seventh num");
            int seventhnum = scan.nextInt();
        }
    }
    else{
        System.out.println("you did not type one or two. please restart program.");
        return;
    }
}
}我喜欢这个挑战,因为它是计算机最初的核心,计算方程式!首先帮助我思考的是计算机本身通常如何执行这些类型的操作。据我所知,计算机一次只做一个操作(这一部分你做对了!),然后存储结果,并基本上重新评估剩余的问题,就好像操作已经完成一样

所以4+3+2

简直成了

7+2

等等

为了在java中完成这类工作,我认为最好熟悉一些概念,比如ArrayList和String.split

您需要ArrayList来保存问题,而不是更传统的数组,因为问题的长度在整个程序中都会发生变化,正如我们在上面的4+3+2示例中看到的那样。因此,如果您尝试使用for循环遍历一个数组,但该数组需要不断变短,那么这一切都会变得非常复杂

ArrayList是一个非常棒的对象,它为我们提供了一种动态的数组“形式”,其中包含各种有用的方法

您可以像这样声明ArrayList

ArrayList<*variable type*> *Name* = new ArrayList<*same variable type*>();
你可以做:

result = add(a,b);
只要您将方法写在main下面:

public double add(double x, double y){

double tempResult;
tempResult = x + y;
return tempResult;
}

一开始可能看起来更像是打字,但当你习惯于编写这样的方法时,你会发现你的整个代码越来越短

我的这个问题也需要另一个答案。我从中得到了一个答案,但它仍然不能正常工作,所以如果我能得到一些关于这个问题的建议,那就太好了。你应该考虑如何将一个典型的数学表达式作为字符串并对其进行解析/求值,而不是将你的程序限制在非常特定的输入上。看看这里,我只是想补充一下,您的示例方法可以缩短为返回x+y;
result = add(a,b);
public double add(double x, double y){

double tempResult;
tempResult = x + y;
return tempResult;
}