stack2

package Question_8;

import java.util.*;
import java.util.regex.*;
import java.lang.*;

public class Count {
    String[] operater = new String[20];
    String[] number = new String[20];

    public double countExpression(String str) {

        Stack countStack1 = new Stack();
        Stack countStack2 = new Stack();
        double result = 0;
        number = str.split("///|//*|//+|//-");
        operater = str.split("//d+");
        for (int i = 0; i < number.length; i++) {
            countStack1.push(number[i]);
            if (i != number.length - 1) {
                countStack1.push(operater[i + 1]);

            }
        }
        while (!countStack1.isEmpty()) {
            countStack2.push(countStack1.pop());
        }
        String op;
        while (!countStack2.isEmpty()) {
            result = 0;
            op = countStack2.pop().toString();
            if (op.equals("*")) {
                result = Double.parseDouble(countStack1.pop().toString())
                        * Double.parseDouble(countStack2.pop().toString());
                countStack1.push(result);

                continue;
            }
            if (op.equals("/")) {
                result = Double.parseDouble(countStack1.pop().toString())
                        / Double.parseDouble(countStack2.pop().toString());
                countStack1.push(result);
                continue;
            }
            countStack1.push(op);

        }
        while (!countStack1.isEmpty()) {
            countStack2.push(countStack1.pop());
        }
        while (!countStack2.isEmpty()) {
            result = 0;
            op = countStack2.pop().toString();
            if (op.equals("+")) {
                result = Double.parseDouble(countStack1.pop().toString())
                        + Double.parseDouble(countStack2.pop().toString());
                countStack1.push(result);
                continue;
            }
            if (op.equals("-")) {
                result = Double.parseDouble(countStack1.pop().toString())
                        - Double.parseDouble(countStack2.pop().toString());
                countStack1.push(result);
                continue;
            }
            countStack1.push(op);

        }
        return result;
        // System.out.println(result);

    }


    /*public static void main(String[] args) {
        int num1;
        Input_ input = new Input_();
        String a = input.InputString_();
        Count ct1 = new Count();
        num1 = ct1.countExpression(a);
        System.out.println(num1);
    }
*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值