📄 calculator.java
字号:
clear = false;
}
if (temp == backspace) {//退格
String s = text.getText();
text.setText("");
for (int i = 0; i < s.length() - 1; i++) {
char a = s.charAt(i);
text.setText(text.getText() + a);
}
}
if (temp == ce) {
text.setText("0.");
clear = true;
first = 1;
}
if (temp == c) {
text.setText("0.");
;
clear = true;
first = 1;
}
if (temp == num0) {
if (clear == false)//判断是否点击了符号位
text.setText("");
text.setText(text.getText() + "0");
}
if (temp == num1) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "1");
clear = true;//第二次不在清空(前二句)
}
if (temp == num2) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "2");
clear = true;
}
if (temp == num3) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "3");
clear = true;
}
if (temp == num4) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "4");
clear = true;
}
if (temp == num5) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "5");
clear = true;
}
if (temp == num6) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "6");
clear = true;
}
if (temp == num7) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "7");
clear = true;
}
if (temp == num8) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "8");
clear = true;
}
if (temp == num9) {
if (clear == false)
text.setText("");
text.setText(text.getText() + "9");
clear = true;
}
if (temp == aa) {
text.setText(text.getText() + "A");
}
if (temp == bb) {
text.setText(text.getText() + "B");
}
if (temp == cc) {
text.setText(text.getText() + "C");
}
if (temp == dd) {
text.setText(text.getText() + "D");
}
if (temp == ee) {
text.setText(text.getText() + "E");
}
if (temp == ff) {
text.setText(text.getText() + "F");
}
if (temp == dian) {
clickable = true;
for (int i = 0; i < text.getText().length(); i++)
if ('.' == text.getText().charAt(i)) {
clickable = false;
break;
} //第一层判断是否里面含有小数点;
if (clickable == true)//第二坛判断
text.setText(text.getText() + ".");
}
try {
if (temp == jia) {//加法
qian = Double.parseDouble(text.getText());
fuhao = "+";
clear = false;
}
if (temp == jian) {
qian = Double.parseDouble(text.getText());
fuhao = "-";
clear = false;
;
}
if (temp == cheng) {
qian = Double.parseDouble(text.getText());
fuhao = "*";
clear = false;
}
if (temp == chu) {
qian = Double.parseDouble(text.getText());
fuhao = "/";
clear = false;
}
if (temp == deng) {
double ss = Double.parseDouble(text.getText());
text.setText("");
if (fuhao == "+")
text.setText(qian + ss + "");
if (fuhao == "-")
text.setText(qian - ss + "");
if (fuhao == "*")
text.setText(qian * ss + "");
if (fuhao == "/")
text.setText(qian / ss + "");
clear = false;//要清空前一次的数据
;
}
if (temp == kai) {
String s = text.getText();
if (s.charAt(0) == '-') {
text.setText("负数不能开根号");
} else
text.setText(Double.toString(java.lang.Math.sqrt(Double
.parseDouble(text.getText()))));
clear = false;
}
if (temp == diao) {
if (text.getText().charAt(0) == '0'
&& text.getText().length() == 1) {
text.setText("除数不能为零");
} else {
boolean isDec = true;
int i, j, k;
String s = Double.toString(1 / Double.parseDouble(text
.getText()));
for (i = 0; i < s.length(); i++)
if (s.charAt(i) == '.')
break;
for (j = i + 1; j < s.length(); j++)
if (s.charAt(j) != '0') {
isDec = false;
break;
}
if (isDec == true) {
String stemp = "";
for (k = 0; k < i; k++)
stemp += s.charAt(k);
text.setText(stemp);
} else
text.setText(s);
}
clear = false;
}
if (temp == qiuyi) {
text.setText("0");
clear = false;
}
if (temp == fu) { //导师,此方法参考书中例子
boolean isNumber = true;
String s = text.getText();
for (int i = 0; i < s.length(); i++)
if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'
|| s.charAt(i) == '.' || s.charAt(i) == '-')) {
isNumber = false;
break;
}
if (isNumber == true) {
//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉
if (s.charAt(0) == '-') {
text.setText("");
for (int i = 1; i < s.length(); i++) {
char a = s.charAt(i);
text.setText(text.getText() + a);
}
}
//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处
else
text.setText('-' + s);
}
}
} catch (Exception eee) {
System.out.println("运算时,首先输入数字或字符");
text.setText("运算出错");
clear = false;
}
}
class WindowDestroyer extends WindowAdapter {//退出窗口动作
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class objConversion {//导师,本进制类参考了CSMD类转换例子
public void objConversion() {
}
public String decDec(int decNum) {//10
String strDecNum = Integer.toString(decNum);
for (int i = strDecNum.length(); i < 3; i++) {
strDecNum = "0" + strDecNum;
}
// return strDecNum;
return invert(strDecNum, 5);
}
public String decHex(int decNum) {//10 to 16
String strHexNum = "";
int currentNum = 0;
while (decNum != 0) {
if (decNum > 15) {
currentNum = decNum % 16;
decNum /= 16;
} else {
currentNum = decNum;
decNum = 0;
}
switch (currentNum) {
case 15:
strHexNum += "F";
break;
case 14:
strHexNum += "E";
break;
case 13:
strHexNum += "D";
break;
case 12:
strHexNum += "C";
break;
case 11:
strHexNum += "B";
break;
case 10:
strHexNum += "A";
break;
default:
strHexNum += Integer.toString(currentNum);
break;
}
}
return invert(strHexNum, 2);
}
public String decOct(int decNum) {//10 to 8
String strOctNum = "";
while (decNum != 0) {
if (decNum > 7) {
strOctNum += Integer.toString(decNum % 8);
decNum /= 8;
} else {
strOctNum += Integer.toString(decNum);
decNum = 0;
}
}
return invert(strOctNum, 3);
}
public String decBin(int decNum) {//10 to 2
String strBinNum = "";
while (decNum != 0) {
if (decNum > 1) {
strBinNum += Integer.toString(decNum % 2);
decNum /= 2;
} else {
strBinNum += Integer.toString(decNum);
decNum = 0;
}
}
return invert(strBinNum, 8);
}
private String invert(String strNum, int minLength) //转换长度
{
String answer = "";
int length = strNum.length();
if (length < minLength) {
for (int padding = (minLength - length); padding > 0; padding--) {
answer += "0";
}
}
for (int i = length; i > 0; i--) {
answer += strNum.charAt(i - 1);
}
return answer;
}
}
public static void main(String arg[])//产生窗口
{
Calculator win = new Calculator();
win.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -