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

📄 calculator.java

📁 简单的java计算器
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.datatransfer.*;
import java.io.*;

public class Calculator extends JApplet implements ActionListener {
    String X="";
    String Y="";
    String Op="";
    String M="";
    JFrame jf=new JFrame();
    Container cp=jf.getContentPane();
    Double Result=0.00;
    boolean Ynull=true;
    boolean XY=false;
    boolean first=true;
    int OT=1;
    public  String temp="0";
    private JLabel jl=new JLabel("状态");
    private JTextField jtf=new JTextField("0",25);
    private JMenuBar jmb=new JMenuBar();
    private JMenu Edit,Look,Help;
    private JMenuItem EditCopy,EditPaste,Look1,Look2,HelpAbout ;
    String[ ] name={"Back","CE","C","MC","7","8","9","/","sqrt","MR","4","5","6","*","%",
    "MS","1","2","3","-","1/x","M+","0","+/-",".","+","="};
    
    public Calculator() {
        jf.setTitle("计算器");
        jf.setLocation(450,450);
        jf.setLayout(new BorderLayout());
        jf.setVisible(true);
        jf.setSize(600,235);
        Edit=new JMenu("编辑");
        EditCopy=new JMenuItem("复制");
        EditCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
        EditCopy.addActionListener(new Key());
        EditPaste=new JMenuItem("粘贴");
        EditPaste.addActionListener(new Key());
        EditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
        Look=new JMenu("查看");
        Look1=new JMenuItem("普通");
        Look1.addActionListener(new Key());
        Look1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, InputEvent.CTRL_MASK));
        Look2=new JMenuItem("科学");
        Look2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, InputEvent.CTRL_MASK));
        Look2.addActionListener(new Key());
        Help=new JMenu("帮助");
        HelpAbout=new JMenuItem("关于");
        HelpAbout.addActionListener(new Key());
        HelpAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
        Edit.add(EditCopy);
        Edit.add(EditPaste);
        Look.add(Look1);
        Look.add(Look2);
        Help.add(HelpAbout);
        jmb.add(Edit);
        jmb.add(Look);
        jmb.add(Help);
        jf.setJMenuBar(jmb);
        
        JPanel jp1=new JPanel(new BorderLayout(),true);
        jtf.setEditable(false);
        jtf.setHorizontalAlignment(JTextField.RIGHT);
        jp1.add(jtf);
        cp.add(jtf,"North");
        
        JPanel jp2=new JPanel();
        jp2.setLayout(new GridLayout(1,3));
        jl.setFont(new Font("",Font.BOLD,20));
        jl.setHorizontalAlignment(JLabel.CENTER);
        jp2.add(jl);
        for(int i=0;i<3;i++) {
            makeButton(jp2,name[i]);
        }
        jp2.setSize(40,400);
        cp. add(jp2,BorderLayout.CENTER);
        JPanel jp3=new JPanel(new GridLayout(4,6),true );
        for(int i=3;i<name.length;i++) {
            makeButton(jp3,name[i]);
        }
        cp.add(jp3,BorderLayout.SOUTH);
        jf.validate();
        jf.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        // jf.setResizable(false);
        this.add(jf);
        
        
        
    }
    
    
    public void makeButton(JPanel p,String str) {
        JButton b = new JButton(str);
        b.addActionListener(this);
        p.add(b);
    }
    
    public void actionPerformed(ActionEvent e) {
        String event=e.getActionCommand();
        if(event=="0"||event=="."||event=="1"||event=="2"||event=="3"||event=="4"||event=="5"||event=="6"||event=="7"||event=="8"||event=="9") {
            if(first==false) {
                X="";
                Y="";
                Ynull=true;
                first=true;
                OT=1;
                jtf.setText("0");
                jl.setText(e.getActionCommand());
            }
            
            if(!XY) {
                
                X+=event;
                jtf.setText(X);
                jl.setText("X("+X+")");
            } else {
                Y+=event;
                jtf.setText(Y);
                jl.setText("Y("+Y+")");
                Ynull=false;
            }
        }
        
        if(event=="*"||event=="/"||event=="+"||event=="-" ||event=="%") {
            jl.setText(event);
            Op=event;
            XY=true;
            jtf.setText(Op);
        }
        
        else if(event=="=")             //=运算
        {
            Double x;
            Double y;
            
            if(X.isEmpty())
                X=temp;
            x=Double.parseDouble(X);
            if(Ynull==true) {
                Y=X;
            }
            y=Double.parseDouble(Y);
            
            if(Op=="+") {
                Result=x+y;
            } else if(Op=="-") {
                Result=x-y;
            } else if(Op=="*") {
                Result=x*y;
            } else if(Op=="/") {
                Result=x/y;
            } else if(Op=="%") {
                Result=x % y;
            }
            java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.000");
            jtf.setText(""+myformat.format(Result));
            jl.setText("X("+X+") "+Op+" Y("+Y+")="+Result );
            
            X=Result.toString();
            first=false;
            Ynull=false;
            temp=X;
            XY=false;
        }
        
        else if(event=="sqrt")         //sqrt
        {
            Double x=Double.parseDouble(X);
            if(x>=0) {
                Result=Math.sqrt(x);
                java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.000");
                jtf.setText(""+myformat.format(Result));
            } else{
                jtf.setText("开平方不能为负");
            }
            jl.setText("sqrt("+X+")="+Result);
            X=String.valueOf(Result);
            Ynull=false;
            first=false;
        }
        
        else if(event=="1/x") {
            Double x=Double.parseDouble(X);
            if(x!=0) {
                Result=1/x;
                java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.000");
                jtf.setText(""+myformat.format(Result));
            } else {
                jtf.setText("倒数不能为零");
            }
            jl.setText("1/x("+X+")="+Result);
            X=String.valueOf(Result);
            Ynull=false;
            first=false;
        }
        
        else if(event=="Back") {
            jl.setText("Back "+XY);
            if(!XY) {
                jl.setText("Back X: "+X);
                if(X.length()>1) {
                    X=new String(X.substring(0,X.length()-1));
                    jtf.setText(X);
                } else {
                    X="";
                    jtf.setText("0");
                }
            } else {
                jl.setText("Back Y: "+Y);
                if(Y.length()>1)
                    Y=new String(Y.substring(0,Y.length()-1));
                else
                    Y="0";
                jtf.setText(Y);
                
            }
        }
        
        else if(event=="CE") {
            jl.setText("CE");
            X="";
            Y="";
            Op="";
            Ynull=true;
            XY=false;
            first=true;
            temp="0";
            jtf.setText("0");
        }
        
        
        else if(event=="C") {
            if(first==true) {
                jl.setText("C");
                if(!XY) {
                    X="";
                    jtf.setText("0");
                } else {
                    Y="";
                    jtf.setText("0");
                }
            } else {
                X="";
                Y="";
                Op="";
                Ynull=true;
                XY=false;
                first=true;
                jtf.setText("0");
            }
        } else if(event=="MR") {
            jtf.setText(M);
            jl.setText("MR");
        } else if(event=="MC") {
            jl.setText("MC("+M+")");
            jtf.setText("0");
            M="";
        } else if(event=="MS") {
            M=jtf.getText();
            jl.setText("MS("+M+")");
        } else if(event=="M+") {
            Double m1=Double.parseDouble(jtf.getText());
            Double m2=Double.parseDouble(M);
            M=String.valueOf(m1+m2);
            jl.setText("M+("+m1+")");
        } else if(event=="+/-") {
            if(first==true) {
                if(!XY)                                                        //对X操作
                {
                    String fuhao="";
                    fuhao=X.substring(0,1);
                    if(OT%2==1)                                         //变负
                    {
                        jl.setText("-X :");
                        if(!fuhao.endsWith("-")) {
                            X="-"+X;
                        }
                    } else                                                       //变正
                    {
                        jl.setText("+X :");
                        if(fuhao.endsWith("-")) {
                            X=X.substring(1,X.length());
                        }
                    }
                    jtf.setText(X);
                } else {
                    String fuhao="";
                    fuhao=Y.substring(0,1);
                    if(OT%2==1)                                         //变负
                    {
                        jl.setText("-Y :");
                        if(!fuhao.endsWith("-")) {
                            Y="-"+Y;
                        }
                    } else                                                       //变正
                    {
                        jl.setText("+Y :");
                        if(fuhao.endsWith("-")) {
                            Y=Y.substring(1,Y.length());
                        }
                    }
                    jtf.setText(Y);
                }
            } else {
                String fuhao="";
                fuhao=X.substring(0,1);
                if(OT%2==1)                                         //变负
                {
                    jl.setText("-X :");
                    if(!fuhao.endsWith("-")) {
                        X="-"+X;
                    }
                } else                                                       //变正
                {
                    jl.setText("+X :");
                    if(fuhao.endsWith("-")) {
                        X=X.substring(1,X.length());
                    }
                }
                jtf.setText(X);
                
            }
            OT++;
        }
    }
    class Key implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String event=e.getActionCommand();
            Clipboard clipboard =jf.getToolkit().getSystemClipboard();
            if(event=="复制") {
                String temp=jtf.getText();
                StringSelection date=new StringSelection(temp);
                clipboard.setContents(date,date);
                jl.setText("复制("+temp+")");
            } else if(event=="粘贴") {
                
                Transferable clipData=clipboard.getContents(clipboard);
                if   (clipData   !=   null){
                    try{
                        if   (clipData.isDataFlavorSupported(DataFlavor.stringFlavor)){
                            jtf.setText("");
                            String   s   =   (String)(clipData.getTransferData(DataFlavor.stringFlavor));
                            jtf.replaceSelection(s);
                            jl.setText("粘贴("+s+")");
                        }
                    }catch   (UnsupportedFlavorException   ufe) {
                        System.err.println("Unsupported   flavor:   "   +   ufe);
                    }catch   (IOException   ufe) {
                        System.err.println("Unable   to   get   data:   "   +   ufe);
                    }
                }
                
            }
            
            else if(event=="普通") {
                jl.setText("普通");
            } else if(event=="科学") {
                jl.setText("科学");
            } else if(event=="关于") {
                JFrame j=new JFrame();
                j.setTitle("关于");
                j.setSize(200,100);
                j.setLocation(550,550);
                j.setVisible(true);
                Container contentPane=j.getContentPane();
                JTextField aa=new JTextField();
                aa.setEditable(false);
                aa.setHorizontalAlignment(JTextField.CENTER);
                aa.setText("本程序由李信一完成!");
                aa.setBackground(Color.LIGHT_GRAY);
                contentPane.add(aa,BorderLayout.CENTER);
                j.validate();
                
            }
        }
        
    }
    
    public static void main(String[] args) {
        Calculator c=new Calculator();
    }
    
    public void init() {
        Calculator c=new Calculator();
    }
    
    
}

⌨️ 快捷键说明

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