简单的计算器(java)

一个非常简单的计算器,java实现,swing写的界面,只能进行诸如+、-、*、/的简单计算,而且没有考虑优先级
import  java.awt. * ;
import  java.awt.event. * ;
import  javax.swing. * ;

public   class  jsq  extends  JFrame  {
    
//private JFrame jframe;
    private double result=0,right=0,show,saveResult=0
    
private boolean save=false,first=true,num=true,dolt=false;   
    
private char op=0;  
    
private JPanel pa1,pa2,pa3;
    
private JTextField text;
    
private JButton button[]=new JButton[27];
    
public jsq(){
        
super("计算器0.1Beta@author 卢炬 CS0410");
        Container con
=getContentPane();
        button[
0]=new JButton("Backspace");
        button[
1]=new JButton("CE");
        button[
2]=new JButton("C");
        button[
3]=new JButton("MC");
        
for(int i=4;i<7;i++){
            button[i]
=new JButton(Integer.toString(i+3));
        }

        button[
7]=new JButton("/");
        button[
8]=new JButton("sqrt");
        button[
9]=new JButton("MR");
        
for(int i=10;i<13;i++){
            button[i]
=new JButton(Integer.toString(i-6));
        }

        button[
13]=new JButton("*");
        button[
14]=new JButton("%");
        button[
15]=new JButton("MS");
        
for(int i=16;i<19;i++){
            button[i]
=new JButton(Integer.toString(i-15));
        }

        button[
19]=new JButton("-");
        button[
20]=new JButton("1/x");
        button[
21]=new JButton("M+");
        button[
22]=new JButton("0");
        button[
23]=new JButton("+/-");
        button[
24]=new JButton(".");
        button[
25]=new JButton("+");
        button[
26]=new JButton("=");
        EventHandler handler
=new EventHandler();
        text
=new JTextField();
        con.add(text,BorderLayout.NORTH);
        pa1
=new JPanel();
        pa1.setLayout(
new FlowLayout());
        pa1.add(
new JButton("    "));
        
for(int i=0;i<3;i++)
            pa1.add(button[i]);
        con.add(pa1,BorderLayout.CENTER);
        pa2
=new JPanel(new GridLayout(4,6));
        
for(int i=3;i<27;i++)
            pa2.add(button[i]);
        con.add(pa2,BorderLayout.SOUTH);
        pack();
        setSize(
360,210);
        setVisible(
true);
        
for(int i=0;i<27;i++
            button[i].addActionListener(handler);
    }

    
class EventHandler extends javax.swing.JButton implements ActionListener{
        
public void actionPerformed(ActionEvent event){
            JButton butn
=(JButton)event.getSource();
            
if(butn==button[0]){
                
if(right!=0){
                    String s
=new Double(right).toString();
                    s
=s.substring(0,s.length()-1);
                    right
=Double.parseDouble(s);
                    show 
= right;
                }

            }

            
else if(butn==button[1]) { right=0;show=0;num=true;}
            
else if(butn==button[2]) 
                right
=0; result=0;
                show
=0;num=true;
            }

            
else if(butn==button[3]) save=false;
            
else if(butn==button[4]||butn==button[5]||butn==button[6]||butn==button[10]||
butn
==button[11]||butn==button[12]||butn==button[16]||butn==button[17]||
butn
==button[18]||butn==button[22]||butn==button[24]){
                
if(butn==button[24]) dolt=true;
                
if(num) {
                    String sf1
=butn.getText();
                    right
=Double.parseDouble(sf1);
                    show
=right;num=false;
                }

                
else {  
                    StringBuffer sf;
                    
if(!dolt)
                        
int tm=(int) right;
                        sf
=new StringBuffer(new Integer(tm).toString());
                    }

                    
else
                        sf
=new StringBuffer(new Double(right).toString());
                    }
    
                    sf.append(butn.getText());
                    right
=Double.parseDouble(sf.toString());
                    show
=right;num=false;
                }

            }

            
else if(butn==button[7]||butn==button[13]||butn==button[19]||butn==button[25]||butn==button[26]){
                    num
=true;    
                
if(op==0{ result=right;show = result;}
                
else {
                    
switch(op){
                        
case '*': result*=right;break;
                        
case '/': result/=right;break;
                        
case '-': result-=right;break;
                        
case '+': result+=right;break;
                    }

                    show
=result;
                }

                
if(butn==button[7]) op='/';
                
else if(butn==button[13]) op='*';
                
else if(butn==button[19]) op='-';
                
else if(butn==button[25]) op='+';
                
            }

            
else if(butn==button[8])
                num
=true;
                right
=Math.sqrt(right);
                show 
=right;
            }

            
else if(butn==button[9]) { num=true;right=saveResult;show=right;}
            
else if(butn==button[14]){ num=true;right/=100;show=right; }
            
else if(butn==button[15]){ num=true;save=true;saveResult=show;}
            
else if(butn==button[20]){ num=true;right=1/right; show=right;}
            
else if(butn==button[21])
                num
=true;
                
if(show==right) saveResult+=right;
                
else saveResult*=2;
            }

            
else if(butn==button[23]){
                
if(show==right) right*=-1;
                
else result*=-1;
                show
*=-1;
            }

            
if(save)
                text.setText(
""+new Double(show).toString()); 
            
else text.setText(new Double(show).toString());
        }

    }

    
public static void main(String[] args){
        jsq test
=new jsq();
    }

}

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单计算器 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyCalculator extends Frame implements ActionListener { JTextField txt = new JTextField(""); StringBuffer copyBoard=new StringBuffer(20); private String cmd = "="; private double result = 0;// 运算结果 private boolean start = true; StringBuffer strs=new StringBuffer(); class Window { Window() { Frame help=new Frame("关于作者"); help.setBounds(400,200,200,200); help.setVisible(true); help.setResizable(false); help.addWindowListener(new WindowAdapter() //关闭窗口 { public void windowClosing(WindowEvent e) { ((Frame)e.getSource()).dispose(); } } ); TextArea title = new TextArea(" 软件125实训项目 一 制作:第二组 常志铭 朱靖 2013.5.10 ",10,8,TextArea.SCROLLBARS_NONE); title.setBounds(50,50,200,30); title.setEditable(false); help.add(title); } } MyCalculator() { this.setTitle("我的计算器"); this.setBounds(400,150,225,320); this.createMenu(); this.createMainPanel(); this.addWindowListener(new WindowAdapter() //关闭窗口 { public void windowClosing(WindowEvent e) { System.exit(0); } } ); this.setResizable(false); this.setVisible(true); } private void createMenu() { MenuBar bar = new MenuBar(); this.setMenuBar(bar); Menu EditMenu = new Menu("编辑(E)"); Menu helpMenu = new Menu("帮助(H)"); bar.add(EditMenu); bar.add(helpMenu); MenuItem copyItem = new MenuItem("复制"); copyItem.setShortcut(new MenuShortcut(KeyEvent.VK_C,false)); EditMenu.add(copyItem); copyItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String temp = txt.getText().trim(); copyBoard.replace(0, copyBoard.length(), temp); } } ); MenuItem pasteItem = new MenuItem("粘帖"); pasteItem.setShortcut(new MenuShortcut(KeyEvent.VK_V,false)); EditMenu.add(pasteItem); pasteItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { txt.setText(copyBoard.toString()); result=(Double.parseDouble(copyBoard.toString())); } } ); MenuItem helpItem = new MenuItem("关于计算器"); helpItem.setShortcut(new MenuShortcut(KeyEvent.VK_H,false)); helpMenu.add(helpItem); helpItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { new Window(); } } ); } private void createMainPanel() { //整体面板 Panel Win = new Panel(null); Win.setSize(230, 330); Win.setVisible(true); //Win.setBackground(Color.black); this.add(Win); //显示 txt.setHorizontalAlignment(JTextField.RIGHT); txt.setBounds(5,5,210,50); txt.setFont(new java.awt.Font("Dialog", 1, 30)); txt.setEditable(false); Win.add(txt); //按键面板 Panel Butt = new Panel(null); Butt.setBounds(0, 50, 230, 280); //Butt.setBackground(Color.white); Butt.setVisible(true); Win.add(Butt); Button butx = new Button("C"); butx.setBounds(15,15,40,28); butx.addActionListener(this); butx.setFont(new java.awt.Font("Dialog", 1, 15)); Butt.add(butx); Button butz = new Button("←"); butz.setBounds(65,15,40,28); butz.setFont(new java.awt.Font("Dialog", 1, 20)); butz.addActionListener(this); Butt.add(butz); Button butcf = new Button("/"); butcf.setBounds(115,15,40,28); butcf.setFont(new java.awt.Font("Dialog", 0, 20)); butcf.addActionListener(this); Butt.add(butcf); Button butc = new Button("*"); butc.setBounds(165,15,40,28); butc.setFont(new java.awt.Font("Dialog", 1, 25)); butc.addActionListener(this); Butt.add(butc); Button but7 = new Button("7"); but7.setBounds(15,55,40,28); but7.setFont(new java.awt.Font("Dialog", 0, 15)); but7.addActionListener(this); Butt.add(but7); Button but8 = new Button("8"); but8.setBounds(65,55,40,28); but8.setFont(new java.awt.Font("Dialog", 0, 15)); but8.addActionListener(this); Butt.add(but8); Button but9 = new Button("9"); but9.setBounds(115,55,40,28); but9.setFont(new java.awt.Font("Dialog", 0, 15)); but9.addActionListener(this); Butt.add(but9); Button butjf = new Button("-"); butjf.setBounds(165,55,40,28); butjf.setFont(new java.awt.Font("Dialog", 0, 28)); butjf.addActionListener(this); Butt.add(butjf); Button but4 = new Button("4"); but4.setBounds(15,95,40,28); but4.setFont(new java.awt.Font("Dialog", 0, 15)); but4.addActionListener(this); Butt.add(but4); Button but5 = new Button("5"); but5.setBounds(65,95,40,28); but5.setFont(new java.awt.Font("Dialog", 0, 15)); but5.addActionListener(this); Butt.add(but5); Button but6 = new Button("6"); but6.setBounds(115,95,40,28); but6.setFont(new java.awt.Font("Dialog", 0, 15)); but6.addActionListener(this); Butt.add(but6); Button butj = new Button("+"); butj.setBounds(165,95,40,28); butj.setFont(new java.awt.Font("Dialog", 0, 20)); butj.addActionListener(this); Butt.add(butj); Button but1 = new Button("1"); but1.setBounds(15,135,40,28); but1.setFont(new java.awt.Font("Dialog", 0, 15)); but1.addActionListener(this); Butt.add(but1); Button but2 = new Button("2"); but2.setBounds(65,135,40,28); but2.setFont(new java.awt.Font("Dialog", 0, 15)); but2.addActionListener(this); Butt.add(but2); Button but3 = new Button("3"); but3.setBounds(115,135,40,28); but3.setFont(new java.awt.Font("Dialog", 0, 15)); but3.addActionListener(this); Butt.add(but3); Button bute = new Button("="); bute.setBounds(165,135,40,68); bute.setFont(new java.awt.Font("Dialog", 0, 25)); bute.addActionListener(this); Butt.add(bute); Button but0 = new Button("0"); but0.setBounds(15,175,90,28); but0.setFont(new java.awt.Font("Dialog", 0, 15)); but0.addActionListener(this); Butt.add(but0); Button butd = new Button("."); butd.setBounds(115,175,40,28); butd.setFont(new java.awt.Font("Dialog", 1, 25)); butd.addActionListener(this); Butt.add(butd); } public void actionPerformed(ActionEvent event) { String sf = event.getActionCommand(); if(sf.equals("9")||sf.equals("8")||sf.equals("7")||sf.equals("6")||sf.equals("5")||sf.equals("4")||sf.equals("3")||sf.equals("2")||sf.equals("1")||sf.equals("0")||sf.equals("C")||sf.equals("←")||sf.equals(".")) { String input = sf; if (start) { txt.setText(""); start = false; } if (input.equals("←")) { String str = txt.getText(); if (str.length() > 0) txt.setText(str.substring(0, str.length() - 1)); } else if (input.equals("C")) { txt.setText("0"); start = true; } else txt.setText(txt.getText() + input); } else { String command = sf; if (start) { cmd = command; } else { calculate(Double.parseDouble(txt.getText())); cmd = command; start = true; } } } public void calculate(double x) { if (cmd.equals("+")) result += x; else if (cmd.equals("-")) result -= x; else if (cmd.equals("*")) result *= x; else if (cmd.equals("/")) result /= x; else if (cmd.equals("=")) result = x; txt.setText("" + result); } public static void main (String[] args) { new MyCalculator(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值