本文实例总结了Java编写计算器的常见方法。分享给大家供大家参考,具体如下:
方法一:
package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("Calculator"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); // addButton("Backspace", 0, 1, 2, 1, insert); // addButton("CE", 2, 1, 1, 1, insert); // addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); // addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); this.setResizable(false); setSize(180, 200); setVisible(true); } private void addButton(String label, int row, int column, int with, int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField.setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { 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; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
方法二:
import java.awt.*; import java.awt.event.*; public class MyCalculator { PRivate Frame f; private TextField tf = new TextField(30); private long result; private boolean append=false; private char Operator='='; private Button[] btn=new Button[15]; public MyCalculator() { initComponent(); } private void initComponent() { f = new Frame("My Calculator V1.0"); f.setLayout(new BorderLayout()); //The frame uses BorderLayout f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); Panel centerPanel = new Panel(); centerPanel.setLayout(new GridLayout(5, 3)); //The panel uses GridLayout NumberListener nl=new NumberListener(); OperatorListener ol=new OperatorListener(); btn[10]=new Button("+"); btn[11]=new Button("-"); btn[12]=new Button("*"); btn[13]=new Button("/"); btn[14]=new Button("="); for (int i=0;i<=9;i++){ btn[i]=new Button(String.valueOf(i)); centerPanel.add(btn[i]); btn[i].addActionListener(nl); if (i%2==1){ centerPanel.add(btn[(i+19)/2]); btn[(i+19)/2].addActionListener(ol); } } f.add(centerPanel, BorderLayout.CENTER); Panel northPanel = new Panel(); tf.setEditable(false); northPanel.add(tf); f.add(northPanel, BorderLayout.NORTH); } public void go() { f.pack(); f.setVisible(true); } public static void main(String[] args) { new MyCalculator().go(); } /** *采用成员内部类方式,实现监听器接口,方便访问主类内类内部成员。 *此类负责数字按钮Action事件监听和处理 */ class NumberListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if (!append) { tf.setText(""); append=true; } String s=tf.getText(); s+=e.getActionCommand(); tf.setText(s); if (!btn[10].isEnabled()){ for(int i=10;i<=14;i++) btn[i].setEnabled(true); } } } /** * 成员内部类,负责操作符按钮的事件处理 */ class OperatorListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if (!append) return; for(int i=10;i<=14;i++) btn[i].setEnabled(false); String s=tf.getText(); long num=Long.parseLong(s);//get the number of textfield append=false; //set append switch(operator){ case '+':result+=num;break; case '-':result-=num;break; case '*':result*=num;break; case '/':{ if (num==0) result=0; else result/=num; break; } case '=':result=num;break; } tf.setText(String.valueOf(result)); //set the value of result to textfield String op=e.getActionCommand(); operator=op.charAt(0); // set operator } } }
方法三:
package wanwa; import java.util.*; public class calc { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("*****************简易计算器****************"); System.out.println("*\t\t\t\t\t*"); System.out.println("* 使用说明: 1.加法 2.减法 3.乘法 4.除法 *"); System.out.println("*\t\t\t\t\t*"); System.out.println("*****************************************"); for(int i=0;i<100;i++){ System.out.print("\n请选择运算规则:"); int num = input.nextInt(); switch(num){ case 1: System.out.println("\n******你选择了加法******\n"); System.out.print("请输入第1个加数:"); int jiashu1 = input.nextInt(); System.out.print("请输入第2个加数:"); int jiashu2 = input.nextInt(); System.out.println("运算结果为:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2)); break; case 2: System.out.println("\n******你选择了减法******\n"); System.out.print("请输入被减数:"); int jianshu1 = input.nextInt(); System.out.print("请输入减数:"); int jianshu2 = input.nextInt(); System.out.println("运算结果为:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2)); break; case 3: System.out.println("\n******你选择了乘法******\n"); System.out.print("请输入第1个因数:"); int chengfa1 = input.nextInt(); System.out.print("请输入第2个因数:"); int chengfa2 = input.nextInt(); System.out.println("运算结果为:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2)); break; case 4: System.out.println("\n******你选择了除法******\n"); System.out.print("请输入被除数:"); double chufa1 = input.nextInt(); System.out.print("请输入除数:"); double chufa2 = input.nextInt(); System.out.println("运算结果为:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2)); break; default: System.out.println("\n你的选择有错,请重新选择!"); break; } } } }
方法四:
package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("Calculator"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); // addButton("Backspace", 0, 1, 2, 1, insert); // addButton("CE", 2, 1, 1, 1, insert); // addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); // addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); this.setResizable(false); setSize(180, 200); setVisible(true); } private void addButton(String label, int row, int column, int with, int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField.setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { 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; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); } }
希望本文所述对大家Java程序设计有所帮助。
本文向大家介绍java常见事件响应方法实例汇总,包括了java常见事件响应方法实例汇总的使用技巧和注意事项,需要的朋友参考一下 本文实例汇总了java中常见的事件响应方法,包括容器类监听、监听器类、AbstractAction、反射等。以方便大家参考。具体方法如下: 首先,在Java图形用户界面中,处理事件时所必须的步骤是: 1、创建接受响应的组件(控件) 2、实现相关事件监听接口 3、注册事件源
本文向大家介绍php读取XML的常见方法实例总结,包括了php读取XML的常见方法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取XML的常见方法。分享给大家供大家参考,具体如下: xml源文件 1)DOMDocument读取xml 2)simplexml读取xml 3)用php正则表达式来读取数据 4)xmlreader来读取xml数据 PS:这里再为大家提供几款关于x
本文向大家介绍AngularJS常见过滤器用法实例总结,包括了AngularJS常见过滤器用法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS常见过滤器用法。分享给大家供大家参考,具体如下: 过滤器用来格式化需要展示给用户的数据。在HTML中的模板绑定符号 {{ }} 内通过 | 符号来调用过滤器。以下是常用的过滤器。 大小写过滤器 {{ name | upper
本文向大家介绍JavaScrip常见的一些算法总结,包括了JavaScrip常见的一些算法总结的使用技巧和注意事项,需要的朋友参考一下 下面就简单列举一下javascript中常见的一些算法,需要的朋友可以做一下参考。当然这些算法不仅仅适用于javascript,同样也适用于其他语言。 一.线性查找: 比较简单,属于入门级的算法 二.二分查找: 又称折半查找,适用于已排好序的线性结构。 三.冒泡
本文向大家介绍php操作redis数据库常见方法实例总结,包括了php操作redis数据库常见方法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php操作redis数据库常见方法。分享给大家供大家参考,具体如下: 一、安装php_redis扩展,用以操作redis http://pecl.php.net/package/redis 选择自已系统php版本对应的扩展。 二、redi
本文向大家介绍Object类的常见方法总结 相关面试题,主要包含被问及Object类的常见方法总结 时的应答技巧和注意事项,需要的朋友参考一下 Object类是一个特殊的类,是所有类的父类。它主要提供了以下11个方法:
本文向大家介绍实例总结Java多线程编程的方法,包括了实例总结Java多线程编程的方法的使用技巧和注意事项,需要的朋友参考一下 1.什么时候使用多线程编程 一个任务在正常情况下是按顺序执行的,但是如果当前任务里有多个相似进程块(例如for,while语句),我们就可以考虑把这些代码块抽出来并行运行,无需阻塞 2.实现多线程的几种方式 一种是继承Thread类重写run方法,另一种是实现Runnab
本文向大家介绍PHP常见算法合集代码实例,包括了PHP常见算法合集代码实例的使用技巧和注意事项,需要的朋友参考一下 许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一、文件夹遍历 二、九九乘法表 三、无限极递归分类 ①、递归算法 ②、引用算法 四、冒泡排序 五、选择排序 六、插入排序 七、快速排序 到此这篇关于PHP常见算法