将字符串拆分为整数和操作数

问题描述 投票:0回答:1

[我正在尝试通过使用扫描仪来输入字符串,然后将字符串拆分为数字和运算符,然后执行方程式,从而在Java中创建一个基本的计算器。

 Scanner scanner = new Scanner(System.in);
        System.out.println("Enter equation:\n");
        String equation = scanner.nextLine();

        for (char i = 0; i < equation.length(); i++) {
            if (i == '+') {
                System.out.println("add");
            } else if (i == '-') {
                System.out.println("minus");
            } else if (i == '*') {
                System.out.println("times");
            } else if (i == '/') {
                System.out.println("divide");
            }
        }

我有这种方法,可以在其中请求方程式,将其转换为字符串,然后显示运算符。但是我不知道从这里去哪里。我看过正则表达式尝试拆分它,但这似乎不可能。任何帮助都是伟大的!谢谢:)

java java.util.scanner calculator
1个回答
0
投票

欢迎使用SO :)shunting algorithm通常用于这种情况,以便进行更改中缀符号:1 + 3 x 2进入reverse polish notation132+x。这样做是为了消除中缀符号的括号和执行运算符的顺序的歧义。然后,计算器将使用该符号作为AST来计算方程式,或者说是两个堆栈:一个带有运算符,另一个带有数字。例如:numbers:[123], operators:[+x]从堆栈中弹出运算符和两个,然后计算:numbers:[1], operators:[+]23x = 6数字堆栈尚未为空,因此将6放入数字堆栈。numbers:[16], operators:[+]重复:numbers:[], operators:[]16+ = 7堆栈为空,答案为7:)

© www.soinside.com 2019 - 2024. All rights reserved.