⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.java

📁 本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
{ 
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 + -