本文实例总结了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("*ttttt*");
- System.out.println("* 使用说明: 1.加法 2.减法 3.乘法 4.除法 *");
- System.out.println("*ttttt*");
- 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程序设计有所帮助。 |