📄 countercanvas.java
字号:
}
if (Integer.parseInt(tmp) <= 2147483647) {
return tmp;
} else {
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
return tmp = "数据溢出!";
}
}
// 向前消除键功能定义
public void backSpace() {
if (strMemorizer[4] != null && !strMemorizer[4].equals("零不能为除数!")
&& !strMemorizer[4].equals("函数无意义!")
&& !strMemorizer[4].equals("数据溢出!")
&& !strMemorizer[4].equals("0")
&& !strMemorizer[4].equals(strMemorizer[3])) {
strMemorizer[4] = strMemorizer[4].substring(0, strMemorizer[4]
.length() - 1);
if (strMemorizer[4].length() == 0) {
strMemorizer[4] = "0";
return;
}
if (strMemorizer[1] != null) {
strMemorizer[2] = strMemorizer[4];
strMemorizer[3] = ""; // 有可能“=”操作中留有数值,故清空
} else {
strMemorizer[3] = "";
strMemorizer[2] = "";
strMemorizer[1] = "";
strMemorizer[0] = strMemorizer[4];
strMemorizer[4] = strMemorizer[0];
}
}
return;
}
// 撤销(CE)键功能定义
public void cancel() {
if (strMemorizer[3] == null || strMemorizer[3] == "") {
if (strMemorizer[2] != null && strMemorizer[2] != "") {
strMemorizer[2] = "0";
strMemorizer[4] = "0";
return;
} else if (strMemorizer[1] != null && strMemorizer[1] != "") {
strMemorizer[4] = "0";
strMemorizer[1] = "";
return;
} else {
strMemorizer[0] = "";
strMemorizer[4] = "0";
return;
}
}
}
// 数字键功能定义
public void getNumber() {
tmp = "";
for (i = 0; i < 10; i++) {
if (index == indexArray[i]) {
tmp = strNumber[i];
break;
} else {
tmp = "";
}
}
if (n == 3 || n == 17) {
strMemorizer = new String[5];
strMemorizer[4] = tmp;
strMemorizer[0] = tmp;
return;
}
if (strMemorizer[1] == null || strMemorizer[1] == "") {
if (strMemorizer[0] == null || strMemorizer[0] == "") {
strMemorizer[4] = tmp;
strMemorizer[0] = strMemorizer[4];
return;
} else if (Integer.parseInt(strMemorizer[0]) <= 214748363) {
strMemorizer[4] = String.valueOf(Integer
.parseInt(strMemorizer[0] + tmp));
strMemorizer[0] = strMemorizer[4];
return;
} else {
strMemorizer[4] = "数据溢出!";
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
return;
}
} else if (strMemorizer[2] == null || strMemorizer[2] == "") {
strMemorizer[4] = tmp;
strMemorizer[2] = strMemorizer[4];
return;
} else if (Integer.parseInt(strMemorizer[2]) <= 214748363) {
strMemorizer[4] = String.valueOf(Integer.parseInt(strMemorizer[2]
+ tmp));
strMemorizer[2] = strMemorizer[4];
strMemorizer[3] = "";
return;
} else {
strMemorizer[4] = "数据溢出!";
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
}
}
// 运算符号键功能定义
public void getOperator() {
tmp = "";
for (i = 0; i < 4; i++) {
if (index == indexFh[i]) {
tmp = String.valueOf(fh[i]);
if (strMemorizer[0] == null || strMemorizer[0] == "") {
if (index == 15) {
strMemorizer[0] = "0";
strMemorizer[1] = "-";
return;
}
} else if (strMemorizer[2] == null || strMemorizer[2] == "") {
strMemorizer[1] = tmp;
return;
} else {
if (n == 3) {
strMemorizer[0] = strMemorizer[4];
strMemorizer[1] = tmp;
strMemorizer[2] = "";
strMemorizer[3] = "";
return;
} else {
String str = tmp; // 需要传递一下中间变量,否则符号位被错误传值
strMemorizer[3] = operation(strMemorizer[0]
+ strMemorizer[1] + strMemorizer[2]);
strMemorizer[4] = strMemorizer[3];
strMemorizer[0] = strMemorizer[3];
strMemorizer[1] = str;
strMemorizer[2] = "";
strMemorizer[3] = "";
return;
}
}
} else {
tmp = "";
}
}
}
// 等号键功能定义
public void amount() {
tmp = "";
if (strMemorizer[1] == null || strMemorizer[1] == "") {
if (strMemorizer[0] == null || strMemorizer[0] == "") {
strMemorizer[4] = "0";
return;
} else {
strMemorizer[4] = strMemorizer[0];
return;
}
} else if (strMemorizer[2] == null || strMemorizer[2] == "") {
tmp = strMemorizer[0];
strMemorizer[2] = tmp;
tmp = "";
}
strMemorizer[3] = operation(strMemorizer[0] + strMemorizer[1]
+ strMemorizer[2]);
tmp = strMemorizer[3];
strMemorizer[0] = tmp;
strMemorizer[4] = tmp;
strMemorizer[3] = "";
// 不能清strMemorizer[2],如果清了strMemorizer[2],则后面再按“=”键时,计算器会出现功能性错误
}
// 正负号键(非零取反)功能定义(紧接输入符号为“=”和其它运算符时实现功能不同)
public void sign() {
if (strMemorizer[4] != null && !strMemorizer[4].equals("零不能为除数!")
&& !strMemorizer[4].equals("函数无意义!")
&& !strMemorizer[4].equals("数据溢出!") && strMemorizer[4] != ""
&& strMemorizer[4] != "0") {
if (strMemorizer[2] != null && strMemorizer[2] != "") {
if (n == 3) {
if (strMemorizer[4].charAt(0) == '-') {
tmp = strMemorizer[4].substring(1, strMemorizer[4]
.length());
} else {
tmp = "-" + strMemorizer[4];
}
strMemorizer[4] = tmp;
return;
} else {
if (strMemorizer[2].charAt(0) == '-') {
tmp = strMemorizer[2].substring(1, strMemorizer[2]
.length());
} else {
tmp = "-" + strMemorizer[2];
}
strMemorizer[2] = tmp;
strMemorizer[4] = tmp;
return;
}
} else if (strMemorizer[1] == null || strMemorizer[1] == "") {
if (strMemorizer[0].charAt(0) == '-') {
tmp = strMemorizer[0]
.substring(1, strMemorizer[0].length());
} else {
tmp = "-" + strMemorizer[0];
}
strMemorizer[0] = tmp;
strMemorizer[4] = tmp;
return;
} else { // 注意与运算符和等号、数字键功能的匹配
strMemorizer[2] = "";
tmp = operation(strMemorizer[0] + strMemorizer[1] + "0");
strMemorizer[0] = tmp;
strMemorizer[1] = "";
strMemorizer[3] = "";
strMemorizer[4] = "0";
}
}
}
// 归零键(清屏)功能定义
// 屏显清零(显示为0),同时暂存变量清空
public void clsZero() {
strMemorizer = new String[5];
tmp = "";
strMemorizer[4] = "0";
}
// 显示清空
public void cls(Graphics g) {
g.drawImage(igui1, this.getWidth() / 2, 38, Graphics.TOP
| Graphics.HCENTER);
}
// 显示或输出写屏
public void drawScreen(String s, Graphics g) {
cls(g);
if (s != null && s != "") {
if (s.equals("零不能为除数!")) {
g.drawImage(igs1, getWidth() / 2, 49, Graphics.TOP
| Graphics.HCENTER);
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
} else if (s.equals("函数无意义!")) {
g.drawImage(igs2, getWidth() / 2, 49, Graphics.TOP
| Graphics.HCENTER);
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
} else if (s.equals("数据溢出!")) {
g.drawImage(igs3, getWidth() / 2, 49, Graphics.TOP
| Graphics.HCENTER);
strMemorizer[0] = "";
strMemorizer[1] = "";
strMemorizer[2] = "";
strMemorizer[3] = "";
} else {
int offSet; // 偏移变量
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(0) == '-') {
if (i == 0) {
offSet = 10;
} else {
offSet = Integer.parseInt(s.substring(i, i + 1));
}
} else {
offSet = Integer.parseInt(s.substring(i, i + 1));
}
g.setClip(205 - (s.length() - 1 - i) * 15, 47, 15, 27);
g.drawImage(igNumber,
205 - ((s.length() - 1 - i) + offSet) * 15, 47,
Graphics.TOP | Graphics.LEFT);
g.setClip(0, 0, this.getWidth(), this.getHeight());
}
}
}
}
// 获取上次按下的按键索引号
public int anteriorIndex() {
aheadKeycode[1] = aheadKeycode[0];
aheadKeycode[0] = index;
return aheadKeycode[1];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -