资源简介
这是我个人在源代码的基础上增加了扩展功能(键盘监听,按键音效以及音效开关,保存时间,阶乘计算)的计算器,有源代码和jar实例。
代码片段和文件信息
package ch2.data;
import ch2.view.HandleJD;
import java.math.BigDecimal;
import java.util.*;
public class Computer {
public double result; //计算所得结果
public Stack dataItem; //参与运算的数据项
public Stack tempResult; //用堆栈存放临时结果
public Stack operator; //存放运算符号
public Computer(){
init();
}
public void init() {
dataItem = new Stack();
tempResult = new Stack();
dataItem.push(‘0‘);
operator = new Stack();
}
public void setDataItem(char c){
if(c!=‘.‘)
dataItem.push(c);
else {
if(!dataItem.contains(‘.‘))
dataItem.push(c);
}
}
public void setOperator(char p){
if(dataItem.empty()){ //如果没有数据项
operator.clear();//防止用户不断更换或反复单击一个运算符
operator.push(p);//堆栈压入运算符,即保留用户最后确定的运算符
return;
}
if(operator.empty()) { //如果没有运算符
operator.push(p); //堆栈压入运算符
double m = computerDataItem(); //计算数据项
dataItem.removeAllElements(); //将数据项中的数字清空
tempResult.push(m); //把临时结果m压入tempResult
}
else { //如果有运算符
double mData = computerDataItem(); //计算数据项
dataItem.removeAllElements(); //将数据项中的数字清空
char yuansuan =operator.pop(); //弹出已有的运算符
double rTemp =tempResult.pop(); //弹出临时结果
if(yuansuan == ‘+‘){
rTemp = rTemp+mData;
}
else if(yuansuan == ‘-‘) {
rTemp = rTemp-mData;
}
else if(yuansuan == ‘*‘) {
rTemp = rTemp*mData;
}
else if(yuansuan == ‘/‘) {
rTemp = rTemp/mData;
}
tempResult.push(rTemp); //把新临时结果rTemp压入tempResult
operator.push(p); //新运算符压入operator
}
}
public char getOperator() {
if(operator.empty()){
return ‘\0‘;
}
return operator.peek();
}
public void backspace() {
if(dataItem.size()>=1){
dataItem.pop();
}
}
public void initDataItemByMath(MathComputer computer){
computer.handle(this); //对compter中的数据项进行数学计算
}
public double getResult() { //得到计算结果
double endItem = 0;
if(dataItem.empty()){
endItem = tempResult.peek();
}
else {
endItem = computerDataItem();
}
if(operator.empty()) {
result = endItem;
return result;
}
char yuansuan =operator.peek(); //最后的运算符
if(yuansuan == ‘+‘){
result = tempResult.peek()+endItem;
}
else if(yuansuan == ‘-‘) {
result = tempResult.peek()-endItem;
}
else if(yuansuan == ‘*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-04-21 20:03 ch2\.idea\
目录 0 2020-04-21 20:03 ch2\.idea\artifacts\
文件 309 2020-03-27 15:19 ch2\.idea\artifacts\ch2_jar.xm
文件 276 2020-03-25 08:08 ch2\.idea\misc.xm
文件 253 2020-03-25 08:08 ch2\.idea\modules.xm
文件 3568 2020-04-04 15:27 ch2\.idea\workspace.xm
文件 433 2020-03-25 08:08 ch2\ch2.iml
目录 0 2020-04-21 20:03 ch2\out\
目录 0 2020-04-21 20:03 ch2\out\artifacts\
目录 0 2020-04-21 20:03 ch2\out\artifacts\ch2_jar\
文件 303713 2020-04-04 17:27 ch2\out\artifacts\ch2_jar\ch2.jar
目录 0 2020-04-21 20:03 ch2\out\production\
目录 0 2020-04-21 20:03 ch2\out\production\ch2\
目录 0 2020-04-21 20:03 ch2\out\production\ch2\ch2\
目录 0 2020-04-21 20:03 ch2\out\production\ch2\ch2\data\
文件 3640 2020-04-04 17:24 ch2\out\production\ch2\ch2\data\Computer.class
文件 1489 2020-04-04 17:20 ch2\out\production\ch2\ch2\data\Fact.class
文件 156 2020-04-04 16:50 ch2\out\production\ch2\ch2\data\MathComputer.class
文件 1673 2020-04-04 17:20 ch2\out\production\ch2\ch2\data\PorN.class
文件 1907 2020-04-04 17:24 ch2\out\production\ch2\ch2\data\Reciprocal.class
文件 1907 2020-04-04 17:24 ch2\out\production\ch2\ch2\data\Sqrt.class
目录 0 2020-04-21 20:03 ch2\out\production\ch2\ch2\gui\
文件 480 2020-04-04 16:50 ch2\out\production\ch2\ch2\gui\AppWindow.class
目录 0 2020-04-21 20:03 ch2\out\production\ch2\ch2\view\
文件 7047 2020-04-04 16:50 ch2\out\production\ch2\ch2\view\CalculatorWindow.class
文件 898 2020-04-04 17:05 ch2\out\production\ch2\ch2\view\HandleBack.class
文件 899 2020-04-04 17:05 ch2\out\production\ch2\ch2\view\HandleClear.class
文件 2578 2020-04-04 17:05 ch2\out\production\ch2\ch2\view\HandleDigit.class
文件 1715 2020-04-04 17:05 ch2\out\production\ch2\ch2\view\HandleEquation.class
文件 2513 2020-04-04 17:26 ch2\out\production\ch2\ch2\view\HandleEvent.class
文件 972 2020-04-04 17:05 ch2\out\production\ch2\ch2\view\HandleFact.class
............此处省略109个文件信息
相关资源
- java课程设计游戏:急速飞行[绝不坑爹
- 多功能拼图游戏软件 java课程设计 含
- JAVA网吧计费管理系统191156
- Java课程设计酒店管理系统+报告文档
- Java课程设计 源码彩色中国象棋游戏
- JAVA课程设计驾校管理系统
- Java课程设计超市管理系统Myeclipse+My
- java课程设计——记忆测试系统和课程
- Java课程设计--企业职工信息管理系统
- JAVA课程设计——网络版五子棋
- Java课程设计聊天程序
-
JAVA(jsp+servlet+ja
vasc ript)超市商品 - java2实用教程(第四版)耿祥义ppt课件
- java课程设计通讯录管理软件源代码
- Java课程设计案例精编第二版书中案例
- Java课程设计超级万年历文档
- Java课程设计图书管理系统代码及报告
- java课程设计之发送邮件客户端,带发
- 花卉销售管理系统全套
- Java课程设计案例精编第二版-黄晓东完
- Java课程设计报告---运动会成绩管理系
- Java 2 实用教程耿祥义第三版最全集合
- Java课程设计动物换位
- JAVA课程设计学生信息管理系统源码
- Java课程设计——报刊管理系统
- JAVA课程设计—学生成绩管理系统
- Java课程设计案例精编源代码(3).r
- Java程序设计精编教程PPT(耿祥义)
- java课程设计小型超市管理系统
- Java课程设计 电子相册
评论
共有 条评论