• 大小: 1.41MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-03
  • 语言: Java
  • 标签: 耿祥义  张跃平  

资源简介

这是我个人在源代码的基础上增加了扩展功能(键盘监听,按键音效以及音效开关,保存时间,阶乘计算)的计算器,有源代码和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.xml
     文件         276  2020-03-25 08:08  ch2\.idea\misc.xml
     文件         253  2020-03-25 08:08  ch2\.idea\modules.xml
     文件        3568  2020-04-04 15:27  ch2\.idea\workspace.xml
     文件         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个文件信息

评论

共有 条评论