📄 calculator.java
字号:
{
try
{
if(textAnswer.getText()!="")
{
//对文本框中的数据进行转换
if(jb_16==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),16).toString());
if(jb_8==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),8).toString());
if(jb_2==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),2).toString());
}
}catch(NumberFormatException ie){}
//设置标志位
jb_10=true; jb_16=false; jb_8=false; jb_2=false;
//更改按钮的状态
buttonsin.setEnabled(true); buttoncos.setEnabled(true);
buttontan.setEnabled(true); buttonasin.setEnabled(true);
buttonacos.setEnabled(true); buttonatan.setEnabled(true);
buttonA.setEnabled(false); buttonB.setEnabled(false);
buttonc.setEnabled(false); buttonD.setEnabled(false);
buttonE.setEnabled(false);buttonF.setEnabled(false);
button[8].setEnabled(true); button[9].setEnabled(true);
button[3].setEnabled(true); button[4].setEnabled(true);
button[5].setEnabled(true); button[6].setEnabled(true);
button[7].setEnabled(true); buttonDot.setEnabled(true);
button[2].setEnabled(true);
}
else if(temp.getLabel()=="八进制")
{
try
{
if(textAnswer.getText()!="")
{
//对文本框中的数据进行转换
if(jb_16==true) {String k=Integer.valueOf(textAnswer.getText(),16).toString();
textAnswer.setText(Integer.toOctalString(Integer.parseInt(k)));
}
else if(jb_10==true) textAnswer.setText(Integer.toOctalString(Integer.parseInt(textAnswer.getText())));
else if(jb_2==true) {String k=Integer.valueOf(textAnswer.getText(),2).toString();
textAnswer.setText(Integer.toOctalString(Integer.parseInt(k)));
}
}
}catch(NumberFormatException ie){}
//设置标志位
jb_10=false; jb_16=false; jb_8=true; jb_2=false;
//更改按钮的状态
button[8].setEnabled(false); button[9].setEnabled(false);
buttonsin.setEnabled(false); buttoncos.setEnabled(false);
buttontan.setEnabled(false); buttonasin.setEnabled(false);
buttonacos.setEnabled(false); buttonatan.setEnabled(false);
buttonA.setEnabled(false); buttonB.setEnabled(false);
buttonc.setEnabled(false); buttonD.setEnabled(false);
buttonE.setEnabled(false);buttonF.setEnabled(false);
button[3].setEnabled(true); button[4].setEnabled(true);
button[5].setEnabled(true); button[6].setEnabled(true);
button[7].setEnabled(true); buttonDot.setEnabled(false);
button[2].setEnabled(true);
}
else if(temp.getLabel()=="二进制")
{
try
{
if(textAnswer.getText()!="")
{
//对文本框中的数据进行转换
if(jb_16==true) {String k=Integer.valueOf(textAnswer.getText(),16).toString();
textAnswer.setText(Integer.toBinaryString(Integer.parseInt(k)));
}
else if(jb_10==true) textAnswer.setText(Integer.toBinaryString(Integer.parseInt(textAnswer.getText())));
else if(jb_8==true) {String k=Integer.valueOf(textAnswer.getText(),2).toString();
textAnswer.setText(Integer.toBinaryString(Integer.parseInt(k)));
}
}
}catch(NumberFormatException ie){}
//设置标志位
jb_10=false; jb_16=false; jb_8=false; jb_2=true;
//更改按钮的状态
button[3].setEnabled(false); button[4].setEnabled(false);
button[5].setEnabled(false); button[6].setEnabled(false);
button[7].setEnabled(false); button[8].setEnabled(false);
button[9].setEnabled(false); button[2].setEnabled(false);
buttonsin.setEnabled(false); buttoncos.setEnabled(false);
buttontan.setEnabled(false); buttonasin.setEnabled(false);
buttonacos.setEnabled(false); buttonatan.setEnabled(false);
buttonA.setEnabled(false); buttonB.setEnabled(false);
buttonc.setEnabled(false); buttonD.setEnabled(false);
buttonE.setEnabled(false);buttonF.setEnabled(false);
buttonDot.setEnabled(false);
}
}
private double math(int prekey, String x)
{
if(jb_16==true) x=Integer.valueOf(x,16).toString(); //将十六进制转换为十进制
else if(jb_8==true) x=Integer.valueOf(x,8).toString(); //将八进制转换为十进制
else if(jb_2==true) x=Integer.valueOf(x,2).toString(); //将二进制转换为十进制
else x=x; //十进制保持不变
System.out.println(x);
switch (prekey) {
case 0:
answerd += Double.parseDouble(x); //加法运算
break;
case 1:
answerd -= Double.parseDouble(x); //减法运算
break;
case 2:
answerd *= Double.parseDouble(x); //乘法运算
break;
case 3: //除法运算
if (Double.parseDouble(x) == 0) {
textAnswer.setText("除数不能为零");
clickable = false;
}
else
answerd /= Double.parseDouble(x);
break;
case 4:
{ //X的Y次方
int k=(int)answerd;
for(int i=2;i<=Integer.parseInt(x);i++) answerd *=k;
}
break;
default:
answerd = Double.parseDouble(x); //等号运算
}
return answerd;
}
private String ten_chang(int x)
{
String k="";
if(jb_16==true) k=Integer.toHexString(x); //将十进制转换为十六进制
else if(jb_8==true) k=Integer.toOctalString(x);//将十进制转换为八进制
else if(jb_2==true) k=Integer.toBinaryString(x); //将十进制转换为二进制
System.out.println(k);
return k;
}
private String chang_ten(String x)
{
String k="";
if(jb_16==true) k=Integer.valueOf(x,16).toString(); //将十六进制转换为十进制
else if(jb_8==true) k=Integer.valueOf(x,8).toString(); //将八进制转换为十进制
else if(jb_2==true) k=Integer.valueOf(x,2).toString(); //将二进制转换为十进制
else k=x; //十进制保持不变
return k;
}
//设置各个按钮行为
public void actionPerformed(ActionEvent event) {
boolean sign = false; //判断是否是double型数参与运算,是为true,不是为false
Object temp = event.getSource();
try {
//如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后
for (int i = 0; i <= 9; i++)
if (temp == button[i] && clickable == true)
textAnswer.setText(textAnswer.getText() + Integer.toString(i));
if(temp ==buttonA && clickable == true) textAnswer.setText(textAnswer.getText() + "A");
else if(temp ==buttonF && clickable == true) textAnswer.setText(textAnswer.getText() + "F");
else if(temp ==buttonB && clickable == true) textAnswer.setText(textAnswer.getText() + "B");
else if(temp ==buttonc && clickable == true) textAnswer.setText(textAnswer.getText() + "C");
else if(temp ==buttonD && clickable == true) textAnswer.setText(textAnswer.getText() + "D");
else if(temp ==buttonE && clickable == true) textAnswer.setText(textAnswer.getText() + "E");
//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'
if (temp == buttonDot && clickable == true) {
boolean isDot = false;
if (textAnswer.getText().length() == 0)
isDot = true;
for (int i = 0; i < textAnswer.getText().length(); i++)
if ('.' == textAnswer.getText().charAt(i)) {
isDot = true;
break;
}
if (isDot == false)
textAnswer.setText(textAnswer.getText() + ".");
}
if ( (temp == buttonAdd || temp == buttonSub || temp == buttonMul ||
temp == buttonDiv) && clickable == true) {
//'+'操作
if (temp == buttonAdd) {math(prekey, textAnswer.getText());
textAnswer.setText("");
prekey = key = 0;}
//'-'操作
if (temp == buttonSub) {math(prekey, textAnswer.getText());
textAnswer.setText("");
prekey = key = 1;}
//'*'操作
if (temp == buttonMul) {
math(prekey, textAnswer.getText());
textAnswer.setText("");
prekey = key = 2;
}
//'/'操作
if (temp == buttonDiv) {
math(prekey, textAnswer.getText());
textAnswer.setText("");
prekey = key = 3;
}
}
//x的y次方运算
if (temp == buttonxy)
{
math(prekey, textAnswer.getText());
textAnswer.setText("");
prekey = key =4;
}
//'='操作
if(temp==buttonEqual&&clickable==true){
//如果连续按'=',则进行连续运算
if(prekey==5){
if(key==0){
answerd+=vard;
textAnswer.setText(df.format(answerd));
}
if(key==1){
answerd-=vard;
textAnswer.setText(df.format(answerd));
}
if(key==2){
answerd*=vard;
textAnswer.setText(df.format(answerd));
}
if(key==3){
if(Double.parseDouble(textAnswer.getText())==0){
textAnswer.setText("除数不能为零");
clickable=false;
}
else{
answerd/=vard;
textAnswer.setText(df.format(answerd));
}
}
}
else{
vard=Double.parseDouble(textAnswer.getText());
if(key==0){
prekey=-1;
answerd+=Double.parseDouble(textAnswer.getText());
textAnswer.setText(df.format(answerd));
}
if(key==1){
prekey=-1;
answerd-=Double.parseDouble(textAnswer.getText());
textAnswer.setText(df.format(answerd));
}
if(key==2){
prekey=-1;
answerd*=Double.parseDouble(textAnswer.getText());
textAnswer.setText(df.format(answerd));
}
if(key==3){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -