⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculation.java

📁 简易计算器
💻 JAVA
字号:
package calculation;

import java.util.Stack;
import javax.swing.*;
import java.util.Scanner;

public class Calculation{
    
    Stack OPTR = new Stack();//符号
    Stack OPND = new Stack();//数字
    int a;
    
    char[][] com = 
    {
        {'>','>','<','<','<','>','>'},
        {'>','>','<','<','<','>','>'},
        {'>','>','>','>','<','>','>'},
        {'>','>','>','>','<','>','>'}, 
        {'<','<','<','<','<','=',' '},
        {'>','>','>','>',' ','>','>'},
        {'<','<','<','<','<',' ','='}
    };

    public static void main(String[] args) 
    { 
        new Calculation();
    }
    
    public Calculation()
    {
        int i=0;
        char c;
        int x;
        String s;
        System.out.println("输入式子:");
        Scanner scan = new Scanner(System.in);
        s=scan.nextLine();
        OPTR.push('#');
        while((c=s.charAt(i))!='#'||(Character)OPTR.peek()!='#')//符号不是#,前一个符号不是#
        {
            if(java.lang.Character.isDigit(c))//是数字
            {
                //System.out.println(c);
                x=Integer.valueOf(c).intValue()-48;//数字转ASC码
                //System.out.println(x);
                OPND.push(x); 
                i++;
            }
            else 
            {
                char o;
                int m=op((Character)OPTR.peek());//前一个符号
                int n=op(c);//当前符号
                //System.out.println(com[m][n]);
                switch(com[m][n]){
                    case'<': 
                    {
                        OPTR.push(c);
                        i++;
                        break;
                    }
                    case'=': 
                    {
                        OPTR.pop();//脱括号
                        i++;
                        break;
                    }
                    case'>': 
                    {
                        o=(Character)OPTR.pop();//o=符号
                        int q=(Integer)OPND.pop();//符号后数字
                        int p=(Integer)OPND.pop();//符号前数字
                        switch(o)//计算,结果入栈
                        {
                            case'+': OPND.push(p+q);break;
                            case'-': OPND.push(p-q);break;
                            case'*': OPND.push(p*q);break;
                            case'/': OPND.push(p/q);break;
                        }
                        break;
                    }
                }
            }
        }
        System.out.println( "计算结果:"+OPND.pop());
    }

    int op(char f)
    {
        switch(f)
        {
            case'+':  a=0;break;
            case'-':  a=1;break;
            case'*':  a=2;break;
            case'/':  a=3;break;
            case'(':  a=4;break;
            case')':  a=5;break;
            case'#':  a=6;break;
        }
        return a;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -