在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → java计算器源代码(入门级)

java计算器源代码(入门级)

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.02M
  • 下载次数:29
  • 浏览次数:498
  • 发布时间:2018-08-16
  • 实例类别:Android平台开发
  • 发 布 人:crazycode
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 计算器 java 源代码

实例介绍

【实例简介】

【实例截图】


【核心代码】

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class calculator extends Frame implements ActionListener, WindowListener
{
    private Container container;
    private GridBagLayout layout;
    private GridBagConstraints constraints;
    private JTextField displayField;         //计算结果显示区
    private String lastCommand;           //保存 ,-,*,/,=命令0
    private double result;               //保存计算结果
    private boolean start;           //判断是否为数字的开始
    private JMenuBar menubar;
    private JMenuItem m_exit;
    private JMenuItem m2_ejz;
    private JMenuItem m2_bjz;
    private Dialog dialog;
    private Label label_dialog;
    private JButton button_sqrt;
    private JButton button_plusminus;
    private JButton button_CE;
    private JButton button_cancel;
    private JButton button_1;
    private JButton button_2;
    private JButton button_3;
    private JButton button_4;
    private JButton button_5;
    private JButton button_6;
    private JButton button_7;
    private JButton button_8;
    private JButton button_9;
    private JButton button_0;
    private JButton button_plus;
    private JButton button_minus;
    private JButton button_multiply;
    private JButton button_divide;
    private JButton button_point;
    private JButton button_equal;
    private JButton button_log;
    private JButton button_tan;
    private JButton button_cos;
    private JButton button_sin;
    private JButton button_exp;

    public calculator()       //构造方法设置布局、为按钮注册事件监听器
    {
        super( "My Calculator" );
        this.setLocation( 350,150 );
        this.setSize( 450,400 );
        this.setResizable( true );
        this.setLayout( new GridLayout( 7,1 ) );
        this.addmyMenu();                   //调用成员方法添加菜单
        displayField = new JTextField( 30 );
        this.add( displayField );
        displayField.setEditable( true );

        start = true;
        result = 0;
        lastCommand = "=";

        JPanel panel0 = new JPanel();
        panel0.setLayout( new GridLayout( 1,4,4,4 ) );


        JPanel panel1 = new JPanel();
        panel1.setLayout( new GridLayout( 1,5,4,4 ) );
        this.add( panel1 );
        button_sqrt = new JButton( "sqrt" );//根号
        button_plusminus = new JButton( " /-" );
        button_exp = new JButton( "exp" );//底数e的n次幂
        button_CE = new JButton( "退位");
        button_cancel = new JButton( "c" );//清除

        JPanel panel2 = new  JPanel();
        panel2.setLayout( new GridLayout( 1,5,4,4 ) );
        this.add( panel2 );
        button_7 = new JButton( "7" );
        button_8 = new JButton( "8" );
        button_9 = new JButton( "9" );
        button_log = new JButton( "log" );//对数
        button_divide = new JButton( "/" );//除

        JPanel panel3 = new JPanel();
        panel3.setLayout( new GridLayout(1,5,4,4) );
        this.add( panel3 );
        button_4 = new JButton( "4" );
        button_5 = new JButton( "5" );
        button_6 = new JButton( "6" );
        button_tan = new JButton( "tan" );//正切
        button_multiply = new JButton( "*" );//乘法

        JPanel panel4=new  JPanel();
        panel4.setLayout( new GridLayout( 1,5,4,4 ) );
        this.add(panel4);
        button_1 = new JButton( "1" );
        button_2 = new JButton( "2" );
        button_3 = new JButton( "3" );
        button_cos = new JButton( "cos");//余弦
        button_minus = new JButton( "-" );

        JPanel panel5 = new  JPanel();
        panel5.setLayout( new GridLayout( 1,5,4,4 ) );
        this.add( panel5 );
        button_0 = new JButton( "0" );
        button_point=new JButton( "." );
        button_equal = new JButton( "=" );
        button_sin = new JButton( "sin" );//正弦
        button_plus = new JButton( " " );

        panel1.add( button_sqrt );
        panel1.add( button_plusminus );
        panel1.add( button_exp );
        panel1.add( button_CE );
        panel1.add( button_cancel );
        panel2.add( button_7 );
        panel2.add( button_8 );
        panel2.add( button_9 );
        panel2.add( button_log );
        panel2.add( button_divide );
        panel3.add( button_4 );
        panel3.add( button_5 );
        panel3.add( button_6 );
        panel3.add( button_tan );
        panel3.add( button_multiply );
        panel4.add( button_1 );
        panel4.add( button_2 );
        panel4.add( button_3 );
        panel4.add( button_cos );
        panel4.add( button_minus );
        panel5.add( button_0 );
        panel5.add( button_point );
        panel5.add( button_equal );
        panel5.add( button_sin );
        panel5.add( button_plus) ;

        button_sqrt.addActionListener( this );
        button_plusminus.addActionListener( this );
        button_exp.addActionListener( this );
        button_CE.addActionListener( this );
        button_cancel.addActionListener( this );
        button_7.addActionListener( this );
        button_8.addActionListener( this );
        button_9.addActionListener( this );
        button_log.addActionListener( this );
        button_divide.addActionListener( this );
        button_4.addActionListener( this );
        button_5.addActionListener( this );
        button_6.addActionListener( this );
        button_tan.addActionListener( this );
        button_multiply.addActionListener( this );
        button_1.addActionListener( this );
        button_2.addActionListener( this );
        button_3.addActionListener( this );
        button_cos.addActionListener( this );
        button_minus.addActionListener( this );
        button_0.addActionListener( this );
        button_point.addActionListener( this );
        button_equal.addActionListener( this );
        button_sin.addActionListener( this );
        button_plus.addActionListener( this );

        this.addWindowListener( new WinClose() );      //注册窗口监听器
        this.setVisible( true );
    }

    private void addmyMenu()		//菜单的添加
    {
        JMenuBar menubar = new JMenuBar();
        this.add( menubar );
        JMenu m1 = new JMenu( "选项" );
        JMenu m2 = new JMenu( "进制转换" );

        JMenuItem m1_exit = new JMenuItem( "退出" );
        m1_exit.addActionListener( this );
        JMenuItem m2_ejz = new JMenuItem( "二进制" );
        m2_ejz.addActionListener( this );
        JMenuItem m2_bjz = new JMenuItem("八进制");
        m2_bjz.addActionListener( this );
        JMenuItem m2_sljz = new JMenuItem("十六进制");
        m2_sljz.addActionListener( this );

        JMenu m3 = new JMenu( "帮助" );
        JMenuItem m3_Help = new JMenuItem( "用法" );
        m3_Help.addActionListener( this );

        dialog = new Dialog( this, "提示" , true );     //模式窗口
        dialog.setSize( 240,80 );
        label_dialog = new Label("", Label.CENTER );   //标签的字符串为空,居中对齐
        dialog.add( label_dialog );
        dialog.addWindowListener( this );          //为对话框注册窗口事件监听器

        m1.add( m1_exit );
        menubar.add( m1 );
        m2.add( m2_ejz );
        m2.add( m2_bjz );
        m2.add( m2_sljz );
        menubar.add( m2 );
        m3.add( m3_Help );
        menubar.add( m3 );
    }

    public void actionPerformed(ActionEvent e)       //按钮的单击事件处理方法
    {
        if(
                e.getSource().equals( button_1 )||e.getSource().equals( button_2 )||
                        e.getSource().equals( button_3 )||e.getSource().equals( button_4 )||
                        e.getSource().equals( button_5 )|| e.getSource().equals( button_6 )||
                        e.getSource().equals( button_7 )|| e.getSource().equals( button_8 )||
                        e.getSource().equals( button_9 ) ||e.getSource().equals( button_0 )||
                        e.getSource().equals( button_point )||e.getSource().equals( button_plusminus )||
                        e.getSource().equals( button_cancel )||e.getSource().equals( button_CE )
                )
        {      //非运算符的处理方法
            String input = e.getActionCommand();

            if ( start )
            {
                displayField.setText("");
                start = false;
                if( input.equals( " /-" ) )
                    displayField.setText( displayField.getText()  "-" );
            }
            if( !input.equals( " /-" ) )
            {
                String str = displayField.getText();
                if( input.equals( "退格" ) )          //退格键的实现方法
                {
                    if( str.length() > 0 )
                        displayField.setText( str.substring( 0,str.length() - 1 ) );
                }
                else if( input.equals( "C" ) )         //清零键的实现方法
                {
                    displayField.setText( "0" );
                    start = true;
                }
                else
                    displayField.setText( displayField.getText()   input );
            }
        }
        else if ( e.getActionCommand() == "二进制" )   //二进制的转换
        {
            int n = Integer.parseInt( displayField.getText() );
            displayField.setText( Integer.toBinaryString( n ) );
        }
        else if ( e.getActionCommand() == "八进制" )    //八进制的转换
        {
            int n = Integer.parseInt( displayField.getText() );
            displayField.setText( Integer.toOctalString( n ) );
        }
        else if ( e.getActionCommand() == "十六进制" )    //十六进制的转换
        {
            int n = Integer.parseInt( displayField.getText() );
            displayField.setText( Integer.toHexString( n ) );
        }

        else if ( e.getActionCommand() == "退出" )      //选项中退出的处理方法
        {
            System.exit( 0 );
        }
        else if ( e.getActionCommand() == "用法" )      //按下'帮助'菜单栏中用法的处理方法
        {
            label_dialog.setText( "sqrt,exp等键是先输运算符再输数字\n" );
            dialog.setLocation( 400,250 );
            dialog.setVisible( true );
        }
        else        //各运算符的识别
        {
            String command = e.getActionCommand();
            if( start )
            {
                lastCommand = command;
            }
            else
            {
                calculate( Double.parseDouble( displayField.getText() ) );
                lastCommand = command;
                start = true;
            }
        }
    }

    public void calculate( double x )          //各运算符的具体运算方法
    {
        double d = 0;
        if ( lastCommand.equals( " " ) )
            result  = x;
        else if (lastCommand.equals( "-" ) )
            result -= x;
        else if ( lastCommand.equals( "*" ) )
            result *= x;
        else if ( lastCommand.equals( "/" ) )
            result /= x;
        else if ( lastCommand.equals( "=" ) )
            result = x;
        else if ( lastCommand.equals( "sqrt" ) )
        {
            d = Math.sqrt( x );
            result = d;
        }
        else if ( lastCommand.equals( "exp" ) )
        {
            d = Math.exp( x );
            result = d;
        }
        else if ( lastCommand.equals( "log" ) )
        {
            d = Math.log( x );
            result = d;
        }
        else if ( lastCommand.equals( "tan" ) )
        {
            d = Math.tan(x);
            result = d;
        }
        else if ( lastCommand.equals( "cos" ) )
        {
            d = Math.cos( x );
            result = d;
        }
        else if ( lastCommand.equals( "sin" ) )
        {
            d = Math.sin( x );
            result = d;
        }
        displayField.setText( ""  result );
    }

    public void windowClosing( WindowEvent e )
    {
        if( e.getSource() == dialog )
            dialog.setVisible( false );           //隐藏对话框
        else
            System.exit( 0 );
    }

    public void windowOpened( WindowEvent e )         {  }
    public void windowActivated( WindowEvent e )      {  }
    public void windowDeactivated( WindowEvent e )    {  }
    public void windowClosed( WindowEvent e )         {  }
    public void windowIconified( WindowEvent e )      {  }
    public void windowDeiconified( WindowEvent e )    {  }

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

class WinClose implements WindowListener
{
    public void windowClosing( WindowEvent e )    //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法
    {
        System.exit( 0 );          //结束程序运行
    }
    public void windowOpened( WindowEvent e ){ }
    public void windowActivated( WindowEvent e ){}
    public void windowDeactivated( WindowEvent e){ }
    public void windowClosed( WindowEvent e ){ }
    public void windowIconified( WindowEvent e ){ }
    public void windowDeiconified( WindowEvent e ){ }
}

实例下载地址

java计算器源代码(入门级)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警