📄 a.java
字号:
{
Button btn=(Button) m.getSource();
ch=btn.getLabel().charAt(0);
switch (ch)
{ case 'c': {lab.setText("0"); number=0; mark='n'; Refresh=false;}break;//初始化
case '1': enter(); break;
case '2': enter(); break;
case '3': enter(); break;
case '4': enter(); break;
case '5': enter(); break;
case '6': enter(); break;
case '7': enter(); break;
case '8': enter(); break;
case '9': enter(); break;
case '0': {if(Refresh==true) { lab.setText("0"); number=0; Refresh=false; }
if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)
break;
if(number<length)
{number++;lab.setText(lab.getText()+ch);} else break;
} break;
case 'A': enter(); break;
case 'B': enter(); break;
case 'C': enter(); break;
case 'D': enter(); break;
case 'E': enter(); break;
case 'F': enter(); break;
case '.': {if(Refresh==true) {lab.setText("0"); number=0; Refresh=false;}
if(lab.getText().indexOf('.')== -1)
{number++;lab.setText(lab.getText()+ch);}
else
break;
}
break;
case 'b': {if(number==0) break;
else
{if(--number==0) {lab.setText("0"); number=0;}
else
{if (number!=1) lab.setText(lab.getText().substring(0,number));
else
lab.setText(Character.toString(lab.getText().charAt(0)));}
}
}break;
case '+': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出现异常则初始化效果如同clear键
case '-': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出现异常则初始化效果如同clear键
case '*': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出现异常则初始化效果如同clear键
case '/': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出现异常则初始化效果如同clear键
case '=': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出现异常则初始化效果如同clear键
}
}//end actionPerformed(ActionEvent e) method
//八进制或十六进制转换成十进制I
//-------------------------------------Infinity
public String goto_10(String s,long l)
//参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;
//参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;
{
String str=s; //用来转换的字符串
long j=l; //表示进制
long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权
char cha;//临时记录要转换的字符
for(int i=1;i<=str.length();i++)
{
cha=str.charAt(str.length()-i);
switch(cha)
{
case '1': lg=lg+1*jing;break;
case '2': lg=lg+2*jing;break;
case '3': lg=lg+3*jing;break;
case '4': lg=lg+4*jing;break;
case '5': lg=lg+5*jing;break;
case '6': lg=lg+6*jing;break;
case '7': lg=lg+7*jing;break;
case '8': lg=lg+8*jing;break;
case '9': lg=lg+9*jing;break;
case 'A': lg=lg+10*jing;break;
case 'B': lg=lg+11*jing;break;
case 'C': lg=lg+12*jing;break;
case 'D': lg=lg+13*jing;break;
case 'E': lg=lg+14*jing;break;
case 'F': lg=lg+15*jing;break;}
jing*=j; //位权升一级,为下次使用做好准备
}
return Long.toString(lg);
}//end String goto_10() method
//十进制转换成十六进制
//-------------------------------------
public String goto10_16(String s)
//参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;
{ String str=s; //用来转换的字符串
String st=new String();//用来记录16进制值的字符串
long ch; //每次取余有的值
int k; //将每次取余有的值转换成整形,用来选择转换的16进制字符
long lg;//用来转换的10进制数
if(str.charAt(0)=='-') //如果有负号则出去负号
str=str.substring(1,str.length()-1);
if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数点和E后面的数
str=str.charAt(0)+str.substring(2,str.indexOf('E'));
if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容
str=str.substring(0,str.indexOf('.'));
lg=Long.parseLong(str);//将简化的字符串转化为长整形给lg
while (lg>=16)
{ ch=lg%16;
k=(int)ch;
switch (k)
{case 10: st="A"+st;break;
case 11: st="B"+st;break;
case 12: st="C"+st;break;
case 13: st="D"+st;break;
case 14: st="E"+st;break;
case 15: st="F"+st;break;
default: st=Long.toString(ch)+st;
}
lg=lg/16;
}
k=(int)lg;
switch (k)
{case 10: st="A"+st;break;
case 11: st="B"+st;break;
case 12: st="C"+st;break;
case 13: st="D"+st;break;
case 14: st="E"+st;break;
case 15: st="F"+st;break;
default: st=Long.toString(lg)+st;
}
return st;
}//end goto10_16() method
//-----------------------------------------------
//十进制转换成八进制?
public String goto10_8(String s)
//参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;
{ String str=s;
String st=new String();
long j=8,ch;
long lg;
if(str.charAt(0)=='-') //如果有负号则出去负号
str=str.substring(1,str.length()-1);
if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数点和E后面的数
str=str.charAt(0)+str.substring(2,str.indexOf('E'));
if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容
str=str.substring(0,str.indexOf('.'));
lg=Long.parseLong(str);
while (lg>=j)
{ ch=lg%j;
st=Long.toString(ch)+st;
lg=lg/j;
}
st=Long.toString(lg)+st;
return st;
}//end goto10_8() method
//--------------------------------
//输入字符
public void enter()
{if(Refresh==true)
//如果已经设置了 运算符则在下一次输入数据的时候要把以前lab的内容清除掉
{lab.setText("0"); number=0; Refresh=false;}
if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)
//如果lab的内容为0则,lab的内容将被所输入的字符代替,否则直接在lab的内容后面加上所输入的字符
{lab.setText(Character.toString(ch)); number++;}
else
if(number<length)
{number++;lab.setText(lab.getText()+ch);}
}//end enter() method
//-------------------------------------
//用来处理按了运算符后的计算-
public void js() throws This_number_too_big //指定由method抛出异常
{if (mark=='n') //没有运算符
{mark=ch; //,则设置运算符为刚刚输入的字符,
data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值
Refresh=true;//则设置下一次输入的时候要刷新lab
}
else //如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句
{switch (mark) //根据运算符计算结果,并把结果保存到data
{ case '+': data+=Double.parseDouble(lab.getText()); break;
case '-': data-=Double.parseDouble(lab.getText()); break;
case '*': data*=Double.parseDouble(lab.getText()); break;
case '/': data/=Double.parseDouble(lab.getText()); break;}
lab.setText(Double.toString(data)); //显示运算结果
mark=ch;//设置运算符为刚刚按下的运算符
Refresh=true;//则设置下一次输入的时候要刷新lab
number=lab.getText().length();//设置输入的字符个数
// System.out.println(lab.getText());//用来调试用的
if (data>Double.MAX_VALUE)
//如果data超过double类型的最大值则抛出自定义的一个异常类
{throw new This_number_too_big(); }
}
}//end js() method
//---------------------------
//
public void answer() throws This_number_too_big //指定由method抛出异常
{if (mark=='n')
{}
else
{switch (mark)
{case '+': data+=Double.parseDouble(lab.getText()); break;
case '-': data-=Double.parseDouble(lab.getText()); break;
case '*': data*=Double.parseDouble(lab.getText()); break;
case '/': data/=Double.parseDouble(lab.getText()); break;}
lab.setText(Double.toString(data));
mark='n';}
if (data>Double.MAX_VALUE) //如果data超过double类型的最大值则抛出自定义的一个异常类
{throw new This_number_too_big();}
Refresh=false;
number=lab.getText().length();
}//end answer() method
//---------------------------
}//end class Jsp2003
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -