栈 模拟计算器

本文介绍了如何利用栈来模拟一个简单的计算器,通过栈的数据结构处理加减乘除等运算,实现表达式的求值。
摘要由CSDN通过智能技术生成

用栈 模拟简单的计算器

/*
    制作计算器的步骤:
    1.有两个栈分别存放 数字 和 运算符
    2.对于输入的字符串 从头到尾先取数字,将数字入栈、运算符入栈、再将数字入栈、再将运算符入栈。
    3.运算符入栈的条件是:1.栈空;2.栈顶的运算符比入栈的运算符优先级低。
    4.如果优先级不高于栈顶 就将栈顶的符号取出 然后从取出数字栈中取两个数字,进行计算,计算结果入数字栈
    再次判断 入栈的 运算符 是否高于 栈顶的。
    5.直到字符串遍历完。再将运算符栈、数字栈中的剩余元素取出计算。最终得到结果
 */

public class Calculator {
   
    public static void main(String[] args) {
   
        String expression = "70*2*2-5+1-500+3-4";
        //定义存放数字和运算符的栈
        MyStack numStack = new MyStack(10);
        MyStack operatorStack = new MyStack(10);


        //将字符串入栈
        int index = 0;
        while (true) {
   
            char ch = '0';
            ch = expression.charAt(index);
            if (isOperator(ch)) {
   //是运算符,要入栈
                while (true) {
   //防止 * * 后面 + 的情况,需要在检测依次后再检测
                    if (operatorStack.isEmpty()) {
   //栈空,就直接入栈
                        operatorStack.push(ch);
                        break;
                    } else if (priority((char) operatorStack.peek()) < priority(ch)) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值