多功能科学计算器(包括进制转换,三角函数,四则运算等)

Basic Framework

calculator.java

package myCalculator;
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;           //保存+,-,*,/,=命令0private 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;}   elsedisplayField.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 );           //隐藏对话框elseSystem.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 ){ }
}

Running Effect


Source Download

Please click the address->My Calculator

Summarize

  1. 运用两个面板的叠加做出界面。
  2. 通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。
  3. 调用Math包中的方法实现各函数功能。
  4. 添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制、十六进制的转换,‘帮助’菜单栏中‘用法’的提示对话框。
  5. 整个程序对话框可实现最小化、最大化、关闭。

原文地址:www.iooy.com

java实现多功能科学计算器(包括进制转换,三角函数,四则运算等)相关推荐

  1. JAVA笔记整理(1):进制转换

    JAVA笔记整理(1):进制转换 16.2.28 深圳坪山 多云 18℃ 爱吃螺蛳粉的巴赫 摘要:工具类转化函数:关于进制--2/10/16进制转化(Util_transform_scale)- ps ...

  2. Qt多功能计算器(三)——进制转换

    项目介绍 本篇文章的内容是计算器的第三个功能--进制转换,这个功能相比上一个功能--三角函数的实现略微困难一些.程序的逻辑从理论上说只要修改界面和部分槽函数就可以实现2-36任意进制互相转换,这里只实 ...

  3. 15从零开始学Java之详解计算机中的进制转换

    作者:孙玉昌,昵称[一一哥],另外[壹壹哥]也是我哦 CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 配套项目资料 https://github.com/SunLtd/LearnJava h ...

  4. Java中常见程序:万年历,进制转换等

    1.1/2+2/3+-.+19/20 System.out.println("i\t\tm(i)");double a = 0;for (double i=1; i<=20; ...

  5. Java期末复习——ch02基本类型(进制转换,数据类型转换,汉字编码)

    第一题: /** 写出满足以下要求的 Java 代码.* ① 声明一个float 型变量 value,并赋以初值2.5.* ② 同一行声明 2 个 boolean型的变量 b1 和 b2,其中b2 被 ...

  6. 科学计算机eq7,HiPER Calc Pro(多功能科学计算器)

    HiPER Calc Pro是一款多功能科学计算器,不仅仅可以转换各种的变数还能计算非常复杂的内容,操作简单方便,而且特别的精准,需要经常进行精密计算的朋友赶紧来下载HiPER Calc Pro试试吧 ...

  7. c语言中的16进制坐标计算器,十六进制计算器_16进制计算器

    16进制计算器 开始--所有程序--附件--计算器 电脑计算器16进制转换10进制怎么用 在电脑自带的计算器中启用"程序员"设置,即可进行16进制转换10进制的操作.具体操作请参照 ...

  8. 京东校招java笔试题_2017京东校招笔试编程题:进制转换、辗转相除

    题目描述 时间限制:C/C++语言 1000MS 其他语言:3000MS 内存限制:C/C++语言 65536KB 其他语言:589824KB 题目内容:尽管是一个CS专业的学生,小B的数学基础很好并 ...

  9. 【大数进制转换】清华大学考研复试上机——进制转换(10—2)

    进制转换        点击打开链接 时间限制:1秒 空间限制:65536K 热度指数:4274 算法知识视频讲解 题目描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出. 输入描述: ...

最新文章

  1. ironpython 教程_「ironpython」VS2017 IronPython做界面
  2. linux nginx 安装_艾编程基础教程:Linux 环境下 Nginx 安装
  3. spring的各种注解的作用-持续更新中
  4. CSS 定位 四种定位
  5. linux的文件系统简单介绍
  6. 南京大学2022年计算机考研复试分数线多少
  7. 智慧消防技术在安全管理中的应用与研究
  8. ERROR: Cannot uninstall ‘PyYAML’. It is a distutils installed project and thus we cannot accurately
  9. 51单片机LED 8*8点阵屏显示图形
  10. 【C语言】打印图案总结
  11. SQLMAP插件tamper编写与使用
  12. “51媒体网“媒体邀约,媒体现场采访的优势
  13. LabWindows的TEXTBOX和TABLE操作
  14. R语言1——R的安装和相关介绍
  15. Android导航软件设计开发,基于Android平台的手机导航系统的设计与实现
  16. svchost.exe占用内存过高解决办法
  17. 记录道编程题,估计是python的,用java再写。排序
  18. 带着红领巾,站在巨人肩膀上登鼻上脸,文化或浮躁?
  19. 十个健脑绝招 锻炼大脑 提高记忆(转)
  20. 黑鳍VS达芬奇 十大对决

热门文章

  1. jdk1.8版本下访问本地数据库文件(access数据库.mdb)与(火鸟数据库.fdb)踩坑记录
  2. 中国教育和科研计算机网络是,重大应用—热烈庆祝中国教育和科研计算机网CERNET建设20周年—中国教育和科研计算机网CERNET...
  3. The implementation and analysis of first-order vibration damping based on Matlab
  4. FreeModbus 移植笔记- 1-认识FreeModbus
  5. 动态规划之最优化原理与动态规划方程
  6. 分布式系统下的纠删码技术(一) -- Erasure Code (EC)
  7. Ptcms精美小说阅读网站源码+带采集规则
  8. 车辆逆行识别检测系统 opencv
  9. 替代netstat的命令之一【ss】 使用实例
  10. 扫描图片转换成word-捷速OCR文字识别