boolean isNumGroup=false; boolean canBeBack; double memory;
//记录是否为数字分组 //是否可以使用退格键
//用于内存操作时保存的数据
b) 各功能函数简介
reset函数
reSet() 是把各属性设置为原始值,当按下
void reSet() { answerText.setText(\ textBuffer = new StringBuffer(\ numDot=0; remFun = operator = 0; firstValue = secondValue = result = 0.0; enterSecond = false; forFirOrSec = 1; b_remFir = b_remSec = b_remFun = false; remFir = remSec = 0.0; canBeBack = true; }
showScreen函数
showScreen() 是当按下了数字键后,在屏幕上显示。如果有数字分组项,则调用数字分组函数。如为整数则在其后只显示一个小数点,例如:数值5 应该显示为 5. 若为小数,则直接显示。
void showScreen() { if (numDot==0) answerText.setText(textBuffer.toString()+\ else answerText.setText(textBuffer.toString()); if (isNumGroup == true) { showNumGroup(); } }
showScreenValue函数
showScreenValue() 是用于显示计算后的结果值,具体的功能同上。
void showScreenValue() {
}
int resInteger = (int)result;
if ( Math.abs(result-resInteger) == 0 ) { StringBuffer tmp = new StringBuffer(Double.toString(result)); tmp.deleteCharAt(tmp.length()-1); answerText.setText(tmp.toString()); }
else answerText.setText(Double.toString(result)); if (isNumGroup == true) { showNumGroup(); }
showNumGroup函数
数字分组的显示:每隔三位显示一个逗号以示分隔。
void showNumGroup() { int i,cnt=0; String string = answerText.getText(); String interge,fraction; interge = fraction = string; for (i=0;i
}
} } }
sb.reverse();
answerText.setText(sb.toString()+\
deleteNumGroup函数
deleteNumGroup() 是当已经数字分组时,再次按下该键,消除数字分组的效果;
当输入了四则运算符时,先进行判断各种双目运算的可能性,若不是第一次运算操作则先把上一次的操作完成并在屏幕上显示,并记录下当前的操作符,否则存入操作符。
void AddFunction(int op) { //如果此时第二个数存在.则运算,例如输入2+3=5后按*4 +
if (b_remFir==true && b_remFun==false && enterSecond==true) { if (operator == 1) result = remFir + secondValue; else if (operator == 2) result = remFir - secondValue; else if (operator == 3) result = remFir * secondValue; else if (operator == 4) result = remFir / secondValue; }
b_remFir = true; remFir = result; enterSecond = false; forFirOrSec = 2; operator = op; showScreenValue();
void deleteNumGroup() { StringBuffer sb = new StringBuffer(answerText.getText()); for (int i=0;i AddFunction函数 } //如果此时第二个数存在.则运算,例如输入2+3后按*键 else if (b_remFir==false && b_remFun==false && enterSecond==true) { if (operator == 1) result = firstValue + secondValue; else if (operator == 2) result = firstValue - secondValue; else if (operator == 3) result = firstValue * secondValue; else if (operator == 4) result = firstValue / secondValue; b_remFir = true; remFir = result; enterSecond = false; forFirOrSec = 2; operator = op; showScreenValue(); } else { operator = op; forFirOrSec = 2; } b_remFun = false; remFun = 0; textBuffer = new StringBuffer(\ AddNum函数 把屏幕上的值存入result 和 firstValue secondValue 中。 当按下了等于号时,先对各种键盘的输入方法进行判断,并对每种情况进行正确的操作。 void AddNum() { if (forFirOrSec == 1) { result = firstValue = Double.parseDouble(textBuffer.toString()); b_remFir = false; remFir = 0; } else if (forFirOrSec == 2) { enterSecond = true; secondValue = Double.parseDouble(textBuffer.toString()); b_remSec = false; remSec = 0; } } OnGo函数 void OnGo() { //如果记着第一,二个数和运算符,即上次算完后未输入数,而再次按= if (b_remFir==true && b_remSec==true && b_remFun==true) { if (remFun==1) result = remFir + remSec; else if (remFun==2) result = remFir - remSec; else if (remFun==3) result = remFir * remSec; else if (remFun==4) result = remFir / remSec; } b_remFir=true; b_remSec=true; b_remFun=true; remFir = result; remSec = remSec; remFun = remFun; //只记的第一数,如算完2+3=5后按*4= else if (b_remFir==true && b_remSec==false && b_remFun==false) { if (operator == 1) result = remFir + secondValue; else if (operator == 2) result = remFir - secondValue; else if (operator == 3) result = remFir * secondValue; else if (operator == 4) result = remFir / secondValue; b_remFir=true; b_remSec=true; b_remFun=true; remFir = result; remSec = secondValue; remFun = remFun; } //记住了第一个数,未输入第二个数,输入了运算符.如算完2+3=5后按*=结果为5*5=25; else if (b_remFir==true && b_remSec==true && b_remFun==false) { secondValue = remFir; if (operator == 1) result = remFir + secondValue; else if (operator == 2) result = remFir - secondValue; else if (operator == 3) result = remFir * secondValue; else if (operator == 4) result = remFir / secondValue; } b_remFir=true; b_remSec=true; b_remFun=true; remFir = result; remSec = secondValue; remFun = remFun; //第一二个数和运算符都不记的,记全重新输入,如算完2+3=5后输入4*6= else if (b_remFir==false && b_remSec==false && b_remFun==false) { if (enterSecond == false) secondValue = firstValue; } } if (operator == 1) result = firstValue + secondValue; else if (operator == 2) result = firstValue - secondValue; else if (operator == 3) result = firstValue * secondValue; else if (operator == 4) result = firstValue / secondValue; b_remFir=true; b_remSec=true; b_remFun=true; remFir = result; remSec = secondValue; remFun = remFun; showScreenValue(); textBuffer = new StringBuffer(\firstValue = secondValue = 0; forFirOrSec = 1; enterSecond = false; canBeBack = false; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java计算器实验报告(3)在线全文阅读。
相关推荐: