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

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

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 stackint=new Stack();
        Stack stackchar=new Stack();

        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类型。

你可能感兴趣的:(java)