使用栈实现一个简单的计算器

读之前可以简单的翻阅 栈的实现.

package Stack;

import java.util.Scanner;
import java.util.Stack;

/*
 * 栈 加减乘除
 */

public class Compute {
	public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String string=scan.nextLine();
       // StringBuffer sb = new StringBuffer(string);
        
        /*
         * 使用创建两个Stack分别存储数字和符号
         */
        Stack<Integer> stackint=new Stack<Integer>();
        Stack<Character> stackchar=new Stack<Character>();

        for(int i=(string.length()-1);i>=0;i--){
            
            if(string.charAt(i)>='0'&&string.charAt(i)<='9'){
                //将char转成string,然后再讲string转成int<调用函数>
//                char s1=string.charAt(i);
//                String s=s1+"";
                String s=Character.toString(string.charAt(i));
                
                //System.out.println(string.charAt(i));
                stackint.push(Integer.parseInt(s));
            }
            if(string.charAt(i)>='('&&string.charAt(i)<='/'){
                stackchar.push(string.charAt(i));
            }
        }

        char sign;
        int a,b,data=0;

        while(!stackchar.isEmpty()){
            sign=stackchar.pop();
            if(sign=='+'){
                a=stackint.pop();
                b=stackint.pop();
                data=a+b;
                stackint.push(data);
            }
            else if(sign=='-'){
                a=stackint.pop();
                b=stackint.pop();
                data=a-b;
                stackint.push(data);
            }
            else if(sign=='*'){
                a=stackint.pop();
                b=stackint.pop();
                data=a*b;
                stackint.push(data);
            }
            else if(sign=='/'){
                a=stackint.pop();
                b=stackint.pop();
                if(b==0){
                    System.out.println("除数为0!");
                    System.exit(0);
                }
                data=a/b;
                stackint.push(data);
            }
        }
        data=stackint.pop();
        System.out.println("Result="+data);
    }
}

在使用chatAt()方法的时候,因为返回的是char类型所以思索了一会,一开始使用的是将string类型转为stringBuff类型char s1=string.charAt(i);String s=s1+"";但是显然太麻烦后来搜索了一番发现String s=Character.toString(string.charAt(i));这一句是最简单的将char类型转化为string类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值