欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java计算器源码.doc

    • 资源ID:78792155       资源大小:89KB        全文页数:25页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java计算器源码.doc

    计算器本计算器有显示过程和不显示过程两种功能,其中不显示过程为普通计算器,类似于windows自带的计算器;显示过程的,可以显示预算过程,其中包含所需应用的部分函数,以及格式化功能(最左上角,第一个键格式化,然后输入需要格式化的数位,然后点第二个数,显示格式化结果),当一次运算结束后,会在右边自动显示运算过程,并且运算过程处有保存,复制粘贴清除功能。代码如下:主类:import ZF.*;public class JiSuanQi public static void main(String args) Calculator c = new Calculator("计算器");包ZF中的类:Calculator类package ZF;/* * 计算器布局界面 */import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener static int xg = 1;/ 用于判断是否显示过程,初始状态为显示JSplitPane jsp1, jsp2, jsp3;static JTextField jtf;/ 文本框static JTextArea jta;/ 保存等的历史文本区public static String zc;/ 用来暂时存储数字,实现第一个菜单选项JScrollPane JS;/ 专门用于给文本区提供滚动条public static FileDialog load, save;/ 声明引入对话框BufferedReader in;/ FileReader reader;/JP1 jp1;JP2 jp2;JP3 jp3;JP4 jp4;JP5 jp5;/ 菜单条JMenuBar mb;JMenu m0, m1, m2;JMenuItem m01, m02, m03, m04, m11, m12, m21, m22;public Calculator(String s) super(s);Container con = getContentPane();/ 桌面jp1 = new JP1();jp2 = new JP2();jp3 = new JP3();jp4 = new JP4();jp5 = new JP5();jta = new JTextArea();jta.setEditable(false);JS = new JScrollPane(jta);jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp1, jp2);jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp3, JS);jsp3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp4, jp5);jtf = new JTextField();jtf.setText(String.valueOf(0);jtf.setEditable(false);jtf.setBackground(Color.white);load = new FileDialog(this, "读取历史运算过程", FileDialog.LOAD);load.setVisible(false);load.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) load.setVisible(false););save = new FileDialog(this, "保存历史运算过程", FileDialog.SAVE);save.setVisible(false);save.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) save.setVisible(false););/ 菜单条mb = new JMenuBar();m0 = new JMenu("编辑");m1 = new JMenu("查看");m2 = new JMenu("帮助");m01 = new JMenuItem("复制");m02 = new JMenuItem("粘贴");m03 = new JMenuItem("读取");m04 = new JMenuItem("关闭");m01.addActionListener(this);m02.addActionListener(this);m03.addActionListener(this);m04.addActionListener(this);m11 = new JMenuItem("不显过程");m12 = new JMenuItem("显示过程");m11.addActionListener(this);m12.addActionListener(this);m21 = new JMenuItem("帮助主题");m22 = new JMenuItem("关于计算器");m21.addActionListener(this);m22.addActionListener(this);m0.add(m01);m0.add(m02);m0.add(m03);m0.add(m04);m1.add(m11);m1.add(m12);m2.add(m21);m2.addSeparator();m2.add(m22);mb.add(m0);mb.add(m1);mb.add(m2);setJMenuBar(mb);con.add(jtf, BorderLayout.NORTH);con.add(jsp1, BorderLayout.CENTER);con.add(jsp2, BorderLayout.EAST);con.add(jsp3, BorderLayout.WEST);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setBounds(100, 100, 800, 260);setResizable(false);setVisible(true);validate();public void actionPerformed(ActionEvent e) if (!jtf.getText().equals("error") if (e.getSource() = m01) zc = jtf.getText(); else if (e.getSource() = m02) if (zc != null) if (xg = 1) if (jtf.getText().equals("0")jtf.setText(zc);elsejtf.setText(jtf.getText() + zc); elsejtf.setText(zc);if (e.getSource() = m03) /读取文件Calculator.load.setVisible(true);Calculator.jta.setText(null);String s;if(Calculator.load.getFile()!=null)tryFile file=new File(Calculator.load.getDirectory(),Calculator.load.getFile();reader=new FileReader(file);in=new BufferedReader(reader);while(s=in.readLine()!=null)Calculator.jta.append(s+'n');in.close();reader.close();catch(IOException e2)Calculator.jta.append("读取错误"); else if (e.getSource() = m04) System.exit(0); else if (e.getSource() = m11) / 换窗体大小,同时换规则setSize(320, 260);remove(jsp2);remove(jsp3);JP2.sf = 0;jtf.setText(String.valueOf(0);xg = 0;/ 改变菜单选项的可选性m03.setEnabled(false);m04.setEnabled(false);/ 换对齐方式JP2.sf = 0;jtf.setEditable(false);jtf.setBackground(Color.white);jtf.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);validate(); else if (e.getSource() = m12) setSize(800, 260);add(jsp2, BorderLayout.EAST);add(jsp3, BorderLayout.WEST);JP2.sf = 0;jtf.setText(String.valueOf(0);xg = 1;m03.setEnabled(true);m04.setEnabled(true);JP2.eg = 0;jtf.setEditable(false);jtf.setBackground(Color.white);jtf.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);validate(); else if (e.getSource() = m21) JOptionPane.showMessageDialog(this,"本计算器以模仿Windows系统自带计算器为主,详情请参照系统计算器“帮助主题”。", "帮助主题",JOptionPane.INFORMATION_MESSAGE); else if (e.getSource() = m22) new JA("关于计算器");JA类package ZF;import java.awt.*;import javax.swing.*;public class JA extends JFrame JLabel jl = new JLabel6;JTextField jtf1 = new JTextField6;JTextField jtf2 = new JTextField6;public JA(String s) super(s);setLayout(new GridLayout(6, 3);jl0 = new JLabel("制作组:");jl1 = new JLabel("组成员:");for (int i = 2; i < 6; i+) jli = new JLabel();jtf10 = new JTextField("小叮当");jtf11 = new JTextField("曹剑");jtf12 = new JTextField("李剑");jtf13 = new JTextField("王斌");jtf14 = new JTextField("翟鹏翔");jtf15 = new JTextField("奥然");jtf20 = new JTextField("第一组");jtf21 = new JTextField("项目经理");for (int i = 2; i < 6; i+) jtf2i = new JTextField("程序员");for (int i = 0; i < 6; i+) jtf1i.setEditable(false);jtf2i.setEditable(false);for (int i = 0; i < 6; i+) add(jli);add(jtf1i);add(jtf2i);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setBounds(100, 100, 250, 250);setVisible(true);validate();JP1类package ZF;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JP1 extends JPanel implements ActionListener JButton b1, b2, b3;public JP1() setLayout(new GridLayout(1, 3, 5, 5);b1 = new JButton("Backspace");b2 = new JButton("CE");b3 = new JButton("C");b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);add(b1);add(b2);add(b3);public void actionPerformed(ActionEvent e) String s = Calculator.jtf.getText();if (!Calculator.jtf.getText().equals("error") if (e.getSource() = b1) if (s.length() != 1)Calculator.jtf.setText(s.substring(0, s.length() - 1);elseCalculator.jtf.setText(String.valueOf(0); else if (e.getSource() = b2) Calculator.jtf.setText(String.valueOf(0);if (Calculator.xg = 1)JP2.eg = 0;if (e.getSource() = b3) Calculator.jtf.setText(String.valueOf(0);if (Calculator.xg = 0)JP2.sf = 0;elseJP2.eg = 0;JP2类package ZF;/* * 计算器核心部分,基本算法按钮 */import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JP2 extends JPanel implements ActionListener JButton b = new JButton24;static int eg, sf, gs;/ eg判断是否摁过按钮,sf判断算法, gs用于用于存放给格式化的位数static double sfg;/ sfg用于存放各种算法的结果float zsg;/ zsg用于存放最终算术结果static String zgc, sgc, fh;/* * zgc用于存放zsg所转换而成的字符串, sgc用于存放sfg所转化而成的字符串, * fh用于存放显示的符号 */public JP2() setLayout(new GridLayout(4, 5, 5, 5);for (int i = 0; i < 10; i+) bi = new JButton("" + i);b10 = new JButton("+/-");b11 = new JButton(".");b12 = new JButton("+");b13 = new JButton("-");b14 = new JButton("×");b15 = new JButton("÷");b16 = new JButton("=");b17 = new JButton("sqrt");b18 = new JButton("%");b19 = new JButton("1/x");for (int i = 0; i < 20; i+) bi.addActionListener(this);add(b7);add(b8);add(b9);add(b15);add(b17);add(b4);add(b5);add(b6);add(b14);add(b18);add(b1);add(b2);add(b3);add(b13);add(b19);add(b0);add(b10);add(b11);add(b12);add(b16);public static void NumberFa(int i) / 数字法则if (Calculator.xg = 0) / 如果不显示过程double zhs = Double.parseDouble(Calculator.jtf.getText();/ zhs用于存放暂时获取的数字,以下同理if (eg = 0) / 判断是否按过加法法则等按钮,如果没按过,将再次按得数字与原数字组成一个新的字符串if (zhs != 0 | zhs = 0&& Calculator.jtf.getText().indexOf(".") != -1) / 判断是原来的数字是否为零,为零或者不为零但有小数点Calculator.jtf.setText(Calculator.jtf.getText()+ String.valueOf(i); else/ 因为0不能做第一个数字(小数点除外),所以如果数字为零,则直接设置为按得数字Calculator.jtf.setText(String.valueOf(i); else / 如果按过法则按钮,则直接设置文本框Calculator.jtf.setText(String.valueOf(i);eg = 0; else if (eg = 0 | Calculator.jtf.getText().equals("0")Calculator.jtf.setText(String.valueOf(i);elseCalculator.jtf.setText(Calculator.jtf.getText()+ String.valueOf(i);eg = 1;public static void SuanFa() / 算法法则if (Calculator.xg = 0) / 如果不显示过程double zhs = Double.parseDouble(Calculator.jtf.getText();String s = "零"/ 判断除数是否为0switch (sf) case 0:/ 表示没有按加减乘除等sfg = zhs;break;case 1:sfg = sfg + zhs;break;case 2:sfg = sfg - zhs;break;case 3:sfg = sfg * zhs;break;case 4:if (zhs != 0)sfg = sfg / zhs;elses = null;break;if (s != null) sgc = String.valueOf(sfg);if (Double.parseDouble(sgc.substring(sgc.indexOf(".") = 0) / 判断小数点后的数字是否为零,如果为零,取整sgc = String.valueOf(int) sfg);Calculator.jtf.setText(sgc); elseCalculator.jtf.setText(String.valueOf(sfg); elseCalculator.jtf.setText("error");eg = 1; else switch (sf) case 1:fh = "+"break;case 2:fh = "-"break;case 3:fh = "×"break;case 4:fh = "÷"break;Calculator.jtf.setText(Calculator.jtf.getText() + fh);eg = 1;public void actionPerformed(ActionEvent e) try if (!Calculator.jtf.getText().equals("error") for (int i = 0; i < 10; i+) / 按钮事件if (e.getSource() = bi) if (Calculator.jtf.getText().length() < 44&& Calculator.xg = 0| Calculator.jtf.getText().length() < 112&& Calculator.xg = 1) / 输入的位数不超过当前文本框NumberFa(i);for (int i = 12; i < 16; i+) / 运算事件if (e.getSource() = bi) if (Calculator.xg = 0) SuanFa();sf = i - 11; else sf = i - 11;SuanFa();if (e.getSource() = b10) if (Calculator.xg = 0) double zhs = Double.parseDouble(Calculator.jtf.getText();String s = String.valueOf(zhs * (-1);if (Double.parseDouble(s.substring(s.indexOf(".") = 0) s = String.valueOf(int) zhs * (-1);Calculator.jtf.setText(s); elseCalculator.jtf.setText(s);/ sf = 0; else if (Calculator.jtf.getText().equals("0") | eg = 0)Calculator.jtf.setText("-");elseCalculator.jtf.setText(Calculator.jtf.getText()+ "-");eg = 1; else if (e.getSource() = b11) if (Calculator.xg = 0) double zhs = Double.parseDouble(Calculator.jtf.getText();if (eg = 0) if (zhs != 0) Calculator.jtf.setText(Calculator.jtf.getText()+ "."); elseCalculator.jtf.setText("0."); else Calculator.jtf.setText(String.valueOf(0.);eg = 0; else if (eg = 1)Calculator.jtf.setText(Calculator.jtf.getText()+ ".");elseCalculator.jtf.setText("0.");eg = 1;if (e.getSource() = b16) if (Calculator.xg = 0) double zhs = Double.parseDouble(Calculator.jtf.getText();switch (sf) case 0:zsg = (float) zhs;zgc = String.valueOf(zsg);break;case 1:zsg = (float) (sfg + zhs);zgc = String.valueOf(zsg);break;case 2:zsg = (float) (sfg - zhs);zgc = String.valueOf(zsg);break;case 3:zsg = (float) (sfg * zhs);zgc = String.valueOf(zsg);break;case 4:if (zhs != 0) zsg = (float) (sfg / zhs);zgc = String.valueOf(zsg); elsezgc = null;break;if (zgc = null)Calculator.jtf.setText("error");else if (Double.parseDouble(zgc.substring(zgc.indexOf(".") = 0) zgc = String.valueOf(int) zsg);Calculator.jtf.setText(zgc); elseCalculator.jtf.setText(zgc);sf = 0;eg = 1; else / 显示过程的运算结果try sgc = Calculator.jtf.getText();new JS(sgc);if (!JS.zgc.equals("error") if (JS.zgc.indexOf(".") != -1&& Double.parseDouble(JS.zgc.substring(JS.zgc.indexOf(".") = 0) Calculator.jtf.setText(String.valueOf(int) Double.parseDouble(JS.zgc);Calculator.jta.append(sgc + "="+ (int) Double.parseDouble(JS.zgc)+ "n"); else Calculator.jtf.setText(JS.zgc);Calculator.jta.append(sgc + "=" + JS.zgc+ "n");eg = 0; catch (NumberFormatException ee) Calculator.jtf.setText("error"); else if (e.getSource() = b17) if (Calculator.xg = 0) if (Double.parseDouble(Calculator.jtf.getText() >= 0) double zhs = Math.sqrt(Double.parseDouble(Calculator.jtf.getText();String s = String.valueOf(zhs);if (Double.parseDouble(s.substring(s.indexOf(".") = 0) s = String.valueOf(int) zhs);Calculator.jtf.setText(s); elseCalculator.jtf.setText(s); elseCalculator.jtf.setText("error"); else if (Cal

    注意事项

    本文(Java计算器源码.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开