📄 calcform.java
字号:
import javax.microedition.lcdui.*;
/**
* 该类描述了计算器。
* 实现了计算器的界面,及加、减、乘、除等计算功能。
*/
public class CalcForm extends Form implements CalcKeyboardListener { //
private CalcScreen showArea; //计算器的显示区
private CalcKeyboard ckeyboard; //计算器键盘
private boolean hasNewOperand = false; //有新的操作数
private boolean numInputing = false;
private double acc = 0.0; //累加器
private String operator = ""; //运算符
private double operand = 0.0; //操作数
public CalcForm() {
super("计算器");
showArea = new CalcScreen(); //创建计算器的显示区对象
ckeyboard = new CalcKeyboard(4, 5); //创建计算器的键盘
ckeyboard.setCalcKeyboardListener(this); //
//布局
showArea.setLayout(Item.LAYOUT_2|Item.LAYOUT_CENTER|Item.LAYOUT_NEWLINE_AFTER);
append(showArea);
append(new Spacer(this.getWidth(), 5));
ckeyboard.setLayout(Item.LAYOUT_2|Item.LAYOUT_CENTER);
append(ckeyboard);
reset();
}
//按钮单击事件处理方法
//如果设备支持触摸屏功能,当用户使用笔在按钮上单击后,
//注册在键盘上的监视器将调用下面的方法,对单击事件进行处理。
public void actionPerformmed(CalcKeyboard btn, String symbol) {
if(symbol == CalcKeyboard.NUM_ZERO || symbol == CalcKeyboard.NUM_ONE || symbol == CalcKeyboard.NUM_TWO ||
symbol == CalcKeyboard.NUM_THREE ||symbol == CalcKeyboard.NUM_FOUR ||symbol == CalcKeyboard.NUM_FIVE ||
symbol == CalcKeyboard.NUM_SIX ||symbol == CalcKeyboard.NUM_SEVEN ||symbol == CalcKeyboard.NUM_EIGHT ||
symbol == CalcKeyboard.NUM_NINE ) {
//
inputNum(symbol);
}
else if(symbol == CalcKeyboard.SYMBOL_DOT
&& showArea.getText().indexOf(CalcKeyboard.SYMBOL_DOT) == -1) {
//
inputNum(symbol);
}
else if(symbol == CalcKeyboard.BACKSPACE) {
String text = showArea.getText();
if(text.length() > 0) {
text = text.substring(0, text.length()-1);
showArea.setText(text);
}
}
else if(symbol == CalcKeyboard.CE) {
showArea.setText("0.");
}
else if(symbol == CalcKeyboard.C) {
//计算器归零
reset();
}
else if(symbol == CalcKeyboard.ADD || symbol == CalcKeyboard.MINUS ||
symbol == CalcKeyboard.MULT || symbol == CalcKeyboard.DIVIDE ||
symbol == CalcKeyboard.EQUALS) {
//
numInputing = false;
String s = showArea.getText();
double d = Double.parseDouble(s);
jisuan(d, symbol);
showArea.setText(String.valueOf(acc));
}
else if(symbol == CalcKeyboard.SYMBOL_MINUS) {
String str = showArea.getText();
if(str.charAt(0) == '-') {
showArea.setText(str.substring(1, str.length()));
}
else {
showArea.setText("-" + str);
}
}
}
private void jisuan(double exp, String oper) {
if(operator.equals("")) {
acc = exp;
operand = exp;
}
else {
if(hasNewOperand) { //新的操作数
operand = exp;
if(operator.equals(CalcKeyboard.ADD)) {
acc += operand;
}
else if(operator.equals(CalcKeyboard.MINUS)) {
acc -= operand;
}
else if(operator.equals(CalcKeyboard.MULT)) {
acc *= operand;
}
else if(operator.equals(CalcKeyboard.DIVIDE)) {
acc /= operand;
}
}
else {
if(oper.equals(CalcKeyboard.EQUALS)) {
if(operator.equals(CalcKeyboard.ADD)) {
acc += operand;
}
else if(operator.equals(CalcKeyboard.MINUS)) {
acc -= operand;
}
else if(operator.equals(CalcKeyboard.MULT)) {
acc *= operand;
}
else if(operator.equals(CalcKeyboard.DIVIDE)) {
acc /= operand;
}
if(!oper.equals(CalcKeyboard.EQUALS)) {
operator = oper;
}
}
}
}
if(!oper.equals(CalcKeyboard.EQUALS)) {
operator = oper;
}
hasNewOperand = false;
}
private void reset() {
hasNewOperand = false;
numInputing = false;
acc = 0.0;
operator = "";
showArea.setText("0.");
}
private void inputNum(String str) {
if(numInputing) {
showArea.setText(showArea.getText() + str);
}
else {
showArea.setText(str);
numInputing = true;
}
hasNewOperand = true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -