计算器(java源码)
来源:互联网 发布:狂发短信软件 编辑:程序博客网 时间:2024/05/01 01:42
View包
display.java
package View;import Controller.control;import Model.Data;import javax.swing.*;import java.awt.*;/** * Created by My-Computer on 2016/5/15. */public class display extends JFrame{ JTextField text = null; JPanel buttonPanel = new JPanel(); MyButton[][] allButton = new MyButton[6][4]; Data data = new Data(); String[] buttonTitle = {"%", "sqrt", "square", "1/x", "CE", "C", "<-", "/", "7", "8", "9", "*", "4", "5", "6", "-", "1", "2", "3", "+", "+/-", "0", ".", "="}; public display(){ GridBagConstraints c = new GridBagConstraints(); GridBagLayout grid = new GridBagLayout(); text = new JTextField(); setTitle("Calculator"); setLayout(grid); text.setFont(new Font("微软雅黑", Font.PLAIN, 16)); c.weightx = 1.0; c.fill = GridBagConstraints.BOTH; c.gridwidth = GridBagConstraints.REMAINDER; grid.setConstraints(text, c); add(text); c.weighty = 1.0; grid.setConstraints(buttonPanel, c); add(buttonPanel); buttonPanel.setLayout(new GridLayout(6, 4)); for (int i = 0; i < 6; i++){ for (int j = 0; j < 4; j++){ allButton[i][j] = new MyButton(buttonTitle[i*4+j], buttonPanel, text, data); } } setVisible(true); pack(); } public static void main(String[] args) { new display(); }}class MyButton extends JButton{ public MyButton(String title, JPanel father, JTextField text, Data data){ setText(title); father.add(this); addActionListener(new control(text, data)); }}
Model包
Data.java
package Model;/** * Created by My-Computer on 2016/5/15. */public class Data { public static double eps = 1e-5; public double answer; public double operation; public boolean flag = false; public boolean isEnd = false; public int operator; /* * operator=0 + * operator=1 - * operator=2 * * operator=3 / * operator=4 % */ public Data(){ init(); } public void init(){ answer = 0; operation = 0; operator = -1; flag = false; isEnd = false; }}
Operator.java
package Model;/** * Created by My-Computer on 2016/5/15. */public class Operator{ public static double Calc(Data date, String op) throws ArithmeticException{ double ret = 0; switch (date.operator){ case -1: date.answer = date.operation; break; case 0: date.answer += date.operation; break; case 1: date.answer -= date.operation; break; case 2: date.answer *= date.operation; break; case 3: if (Math.abs(date.operation) < date.eps){ throw new ArithmeticException(); } date.answer /= date.operation; break; case 4: date.answer %= date.operation; break; } if (op.equals("+")){ date.operator = 0; }else if (op.equals("-")){ date.operator = 1; }else if (op.equals("*")){ date.operator = 2; }else if (op.equals("/")){ date.operator = 3; }else if (op.equals("%")){ date.operator = 4; }else if (op.equals("=")){ date.operator = -1; } return ret; }}
Controller包
control.java
package Controller;import Model.Data;import Model.Operator;import javax.swing.*;import java.awt.event.*;import java.awt.geom.Arc2D;/** * Created by My-Computer on 2016/5/15. */public class control implements ActionListener{ private JTextField text; private Data data; public control(JTextField text, Data data){ this.text = text; this.data = data; } @Override public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if (data.isEnd){ if (s=="C"){ data.init(); text.setText(""); } return; } if (s.length()==1 && "0123456789.".indexOf(s) >= 0){ HandleNumber(s); }else { HandleOperator(s); } } private void HandleNumber(String s){ String tmp = text.getText(); if (data.flag){ System.out.println(text.getText()); text.setText(""); System.out.println(text.getText()); data.flag = false; } if (s.equals(".")){ if(tmp.indexOf(".") >= 0){ return; }else if (tmp.length()==0){ text.setText("0."); }else{ text.setText(tmp+"."); } }else if (s.equals("0")){ if (tmp.equals('0')){ return; } text.setText(tmp+"0"); }else{ text.setText(tmp+s); } } private void HandleOperator(String s){ String tmp = text.getText(); try { if (s.equals("<-")) { if (data.flag){ text.setText(""); data.flag = false; return; } if (tmp.length() == 0) { return; } else { text.setText(tmp.substring(0, tmp.length() - 1)); } } else if (s.equals("CE")) { text.setText(""); } else if (s.equals("C")) { data.init(); text.setText(""); } else if (s.equals("+/-")) { if (tmp.indexOf('-') < 0) { text.setText('-' + tmp); } else { text.setText(tmp.substring(1, tmp.length())); } } else if (s.equals("sqrt")) { text.setText(Double.toString(Math.sqrt(Double.parseDouble(tmp)))); data.flag = true; }else if (s.equals("1/x")){ if(Double.parseDouble(tmp) == 0){ throw new ArithmeticException(); } text.setText(Double.toString(1/Double.parseDouble(tmp))); data.flag = true; }else if (s.equals("square")){ text.setText(Double.toString(Math.pow(Double.parseDouble(tmp) , 2))); data.flag = true; }else{ data.operation = Double.parseDouble(tmp); Operator.Calc(data, s); text.setText(""); if (s=="="){ text.setText(Double.toString(data.answer)); data.isEnd = true; } } }catch (ArithmeticException e){ JOptionPane.showMessageDialog(null, "0不能作为除数!", "Error!", JOptionPane.ERROR_MESSAGE); text.setText(""); }catch (NumberFormatException e){ return; } }}
0 0
- JAVA计算器源码
- 简单计算器java源码
- Java计算器源码
- java计算器源码
- JAVA计算器【源码】
- Java计算器源码
- Java计算器源码
- 计算器(java源码)
- 子网掩码计算器java源码
- 一个简单的java计算器源码分析
- Java实现的计算器(完整源码)
- 计算器源码
- 计算器源码
- java计算器
- Java计算器
- 计算器java
- java计算器
- java计算器
- LeetCode相关的KSum总结
- HDU 4940 Destroy Transportation system 无源汇有上下界的网络流
- Libgdx之ProgressBar (进度条) Slider(滑动条)
- 调和级数发散性的证明
- Javaweb开发中通过Servlet生成验证码图片
- 计算器(java源码)
- 小阿顺打坏蛋游戏介绍
- linux基本命令(33)——df命令
- 第8周项目2- 用对象数组操作长方柱类
- Spark中组件Mllib的学习26之逻辑回归-简单数据集,带预测
- MVC入门经典——深入理解原理
- DNS基础知识
- C++实验6—字符串操作
- Python学习笔记(二)在线用pip下载第三方包