一则运算Java运算器相关代码

开发 后端
本文给出了一则Java运算器设置和实现各项功能的代码。

一则运算Java运算器:

构造者:

  1. import javax.swing.*;  
  2. import java.awt.*;  
  3. import java.awt.event.*;  
  4.  
  5. public class Calculator3 extends JFrame implements ActionListener {  
  6. private boolean dotExist, operated, equaled; // 帮助运算的布尔变量  
  7. private double storedNumber; // 目前的结果  
  8. private char lastOperator; // 表示上一运算符  
  9. private JTextField operation; // 结果栏  
  10. private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符  
  11. private JButton[] numbers; // 数字  
  12.  

初始化变量:

  1. dotExist = false// 表示当前的数是否有小数点  
  2. operated = false// 表示任意运算符是否被按下  
  3. equaled = false// 表示等号是否被按下  
  4. storedNumber = 0;  
  5. lastOperator = '?';  

初始化窗口变量:

  1. operation = new JTextField("0");  
  2. operation.setEditable(false);  
  3. numbers = new JButton[10];  
  4. for (int i = 0; i < 10; i++)  
  5. numbers[i] = new JButton("" + i);  
  6. dot = new JButton(".");  
  7. plus = new JButton("+");  
  8. minus = new JButton("-");  
  9. multi = new JButton("*");  
  10. div = new JButton("/");  
  11. sqrt = new JButton("√");  
  12. equal = new JButton("=");  
  13. changePN = new JButton("±");  
  14. clear = new JButton("AC");  
  15.  
  16. 将窗口物体放入窗口:  
  17. GridBagLayout layout = new GridBagLayout();  
  18. getContentPane().setLayout(layout);  
  19. addComponent(layout, operation, 0041);  
  20. addComponent(layout, numbers[1], 1011);  
  21. addComponent(layout, numbers[2], 1111);  
  22. addComponent(layout, numbers[3], 1211);  
  23. addComponent(layout, numbers[4], 2011);  
  24. addComponent(layout, numbers[5], 2111);  
  25. addComponent(layout, numbers[6], 2211);  
  26. addComponent(layout, numbers[7], 3011);  
  27. addComponent(layout, numbers[8], 3111);  
  28. addComponent(layout, numbers[9], 3211);  
  29. addComponent(layout, dot, 4011);  
  30. addComponent(layout, numbers[0], 4111);  
  31. addComponent(layout, sqrt, 4211);  
  32. addComponent(layout, plus, 1311);  
  33. addComponent(layout, minus, 2311);  
  34. addComponent(layout, multi, 3311);  
  35. addComponent(layout, div, 4311);  
  36. addComponent(layout, equal, 5021);  
  37. addComponent(layout, changePN, 5211);  
  38. addComponent(layout, clear, 5311);  
  39. }  
  40.  


对按钮进行反应的方法:

  1. public void actionPerformed(ActionEvent e) {  
  2. JButton btn = (JButton) e.getSource();  
  3. if (btn == clear) {  
  4. operation.setText("0");  
  5. dotExist = false;  
  6. storedNumber = 0;  
  7. lastOperator = '?';  
  8. else if (btn == equal) {  
  9. operate('=');  
  10. equaled = true;  
  11. else if (btn == plus) {  
  12. operate('+');  
  13. equaled = false;  
  14. else if (btn == minus) {  
  15. operate('-');  
  16. equaled = false;  
  17. else if (btn == multi) {  
  18. operate('*');  
  19. equaled = false;  
  20. else if (btn == div) {  
  21. operate('/');  
  22. equaled = false;  
  23. else if (btn == changePN) {  
  24. operate('p');  
  25. operate('=');  
  26. equaled = true;  
  27. else if (btn == sqrt) {  
  28. operate('s');  
  29. operate('=');  
  30. equaled = true;  
  31. else {  
  32. if (equaled)  
  33. storedNumber = 0;  
  34. for (int i = 0; i < 10; i++)  
  35. if (btn == numbers[i]) {  
  36. if (operation.getText().equals("0"))  
  37. operation.setText("" + i);  
  38. else if (!operated)  
  39. operation.setText(operation.getText() + i);  
  40. else {  
  41. operation.setText("" + i);  
  42. operated = false;  
  43. }  
  44. }  
  45. if (btn == dot && !dotExist) {  
  46. operation.setText(operation.getText() + ".");  
  47. dotExist = true;  
  48. }  
  49. }  
  50. }  


进行运算的方法:

  1. private void operate(char operator) {  
  2. double currentNumber = Double.valueOf(operation.getText())  
  3. .doubleValue();  
  4. if (lastOperator == '?')  
  5. storedNumber = currentNumber;  
  6. else if (lastOperator == '+')  
  7. storedNumber += currentNumber;  
  8. else if (lastOperator == '-')  
  9. storedNumber -= currentNumber;  
  10. else if (lastOperator == '*')  
  11. storedNumber *= currentNumber;  
  12. else if (lastOperator == '/')  
  13. storedNumber /= currentNumber;  
  14. else if (lastOperator == 'p')  
  15. storedNumber *= -1;  
  16. else if (lastOperator == 's')  
  17. storedNumber = Math.sqrt(currentNumber);  
  18. else if (lastOperator == '=' && equaled)  
  19. storedNumber = currentNumber;  
  20. operation.setText("" + storedNumber);  
  21. operated = true;  
  22. lastOperator = operator;  
  23. }  


快捷使用GridBagLayout的方法:

  1. private void addComponent(GridBagLayout layout, Component component,  
  2. int row, int col, int width, int height) {  
  3. GridBagConstraints constraints = new GridBagConstraints();  
  4. constraints.fill = GridBagConstraints.BOTH;  
  5. constraints.insets = new Insets(102102);  
  6. constraints.weightx = 100;  
  7. constraints.weighty = 100;  
  8. constraints.gridx = col;  
  9. constraints.gridy = row;  
  10. constraints.gridwidth = width;  
  11. constraints.gridheight = height;  
  12. layout.setConstraints(component, constraints);  
  13. if (component instanceof JButton)  
  14. ((JButton) component).addActionListener(this);  
  15. getContentPane().add(component);  
  16. }  

主方法初始化并显示窗口:

  1. public static void main(String[] args) {  
  2. Calculator3 calc = new Calculator3();  
  3. calc.setSize(290400);  
  4. calc.setVisible(true);  
  5. }  

【编辑推荐】

  1. 20个开发人员非常有用的Java功能代码
  2. 走进Java 7中的模块系统
  3. JavaFX 1.2 已经发布 主要新功能一览
  4. 2009年十大Java技术解决方案
  5. 2008最值得学习的五种JAVA技术

 

责任编辑:仲衡 来源: 施小平个人博客
相关推荐

2017-08-29 09:40:26

JavaScript代码神经网络

2009-06-15 14:00:44

Java小程序验证

2011-04-11 09:53:06

Oracle

2009-10-21 09:58:28

桌面LinuxLinux操作系统

2011-05-27 10:02:42

Shell

2010-07-21 16:53:33

telnet命令

2010-07-26 15:14:04

telnet服务

2023-11-28 16:35:40

MongoDB迁移Oplog

2022-07-12 08:19:16

XJSON四则运算场景

2009-07-09 17:40:26

Java运算符

2022-10-27 10:06:16

Presto SQLAntlr大数据

2023-04-30 00:02:40

K8Skubelet数据

2021-01-04 09:50:09

前端数据技术

2013-03-11 10:37:08

2022-05-18 16:06:15

位运算异或运算

2012-04-18 18:12:47

iPad Mini

2019-12-03 10:40:25

LinuxCPU网络调优

2018-01-30 10:17:05

AI芯片处理器

2012-03-14 11:13:27

Java
点赞
收藏

51CTO技术栈公众号