資源簡介
這是我個人在源代碼的基礎上增加了擴展功能(鍵盤監(jiān)聽,按鍵音效以及音效開關,保存時間,階乘計算)的計算器,有源代碼和jar實例。

代碼片段和文件信息
package?ch2.data;
import?ch2.view.HandleJD;
import?java.math.BigDecimal;
import?java.util.*;
public?class?Computer?{
????public?double?result;????//計算所得結果
????public?Stack??dataItem;??//參與運算的數(shù)據(jù)項
????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()){???//如果沒有數(shù)據(jù)項
????????????operator.clear();//防止用戶不斷更換或反復單擊一個運算符
????????????operator.push(p);//堆棧壓入運算符,即保留用戶最后確定的運算符
????????????return;
????????}
????????if(operator.empty())?{?????//如果沒有運算符
????????????operator.push(p);???????//堆棧壓入運算符
????????????double?m?=?computerDataItem();?//計算數(shù)據(jù)項
????????????dataItem.removeAllElements();??//將數(shù)據(jù)項中的數(shù)字清空
????????????tempResult.push(m);???????????//把臨時結果m壓入tempResult
????????}
????????else?{?????????????????????//如果有運算符
????????????double?mData?=?computerDataItem();?//計算數(shù)據(jù)項
????????????dataItem.removeAllElements();??//將數(shù)據(jù)項中的數(shù)字清空
????????????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中的數(shù)據(jù)項進行數(shù)學計算
????}
????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個文件信息
評論
共有 條評論