📄 jlab1002a.java
字号:
first=true;
total=false;
operation=false;
number=false;
}
});
//CE
specialButton[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(first){
if(operation){leftFloat=0;textField.setText("0.");operation=false;}
else {textField.setText("0.");number=false;operation=false;}
}
else {textField.setText("0.");number=false;operation=false;}
error=false;
point=false;
}
});
//MS
specialButton[5].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!error){
String s=textField.getText();
int i=s.length();
if(s.charAt(i-1)=='.'){
String temp1=s.substring(0,i-1);
msFloat=Float.valueOf(temp1).floatValue(); //最后一位为小数点,则此数为整型
}
else
msFloat=Float.valueOf(s).floatValue();
buttonEmpty.setText("M");
}
else toolkit.beep();
}
});
//MC
specialButton[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!error){
msFloat=0;
buttonEmpty.setText(" ");
}
else toolkit.beep();
}
});
//MR
specialButton[4].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!error){
if(buttonEmpty.getText().equals("M")){
String t=Float.toString(msFloat);
int i=t.length();
if(t.charAt(i-1)=='0'&&t.charAt(i-2)=='.')
{
String t1=t.substring(0,i-2);
textField.setText(t1+".");
}
else textField.setText(t);
}
else{textField.setText("没有存储数据");error=true;}
}
else toolkit.beep();
}
});
//M+
specialButton[6].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!error){
String s=textField.getText();
int i=s.length();
if(s.charAt(i-1)=='.'&&s.charAt(i-2)=='0')
msFloat*=2;
else{
if(s.charAt(i-1)=='.'){
String t=s.substring(0,i-1);
float j=Float.valueOf(t).floatValue();
msFloat+=j;
}
else{
float j=Float.valueOf(s).floatValue();
msFloat+=j;
}
}
}
else toolkit.beep();
}
});
}
//进行四则运算
public void count(){
switch(symbol1){
case '+':
resultFloat=leftFloat+rightFloat;break;
case '-':
resultFloat=leftFloat-rightFloat;break;
case '*':
resultFloat=leftFloat*rightFloat;break;
case '/':
if(rightFloat==0){textField.setText("除数不能为零");error=true;break;}
else{ resultFloat=leftFloat/rightFloat;break;
}
default:break;
}
leftFloat=resultFloat; //将结果送入左操作数以便进行下一次运算
}
//等于号事件
public void equal(){
if(!error){
if(!first){
String temp=textField.getText();
int i=temp.length();
if(temp.charAt(i-1)=='.'){
String temp1=temp.substring(0,i-1);
rightFloat=Float.valueOf(temp1).intValue(); //最后一位为小数点,则此数为整型
}
else
rightFloat=Float.valueOf(temp).floatValue(); //最后一位不是小数点,则此数为float型
}
count();
if(!error){ //没有出现错误就显示结果
String t=Float.toString(resultFloat);
int j=t.length();
if(t.charAt(j-1)=='0'&&t.charAt(j-2)=='.'){
String r=t.substring(0,j-2);
textField.setText(r+".");
}
else textField.setText(t);
}
first=true;
point=false;
total=true;
operation=false;
number=false;
}
else toolkit.beep(); //有错误则发出蜂鸣声
}
//Backspace事件
public void backspace(){
if(!error&&!total){
if(!operation){
String s=textField.getText();
int i=s.length();
if(i!=2){
if(s.charAt(i-1)!='.'){
StringBuffer s1=new StringBuffer(s);
s1.deleteCharAt(i-1);
s=new String(s1);
textField.setText(s);
}
else{
StringBuffer s1=new StringBuffer(s);
if(point) point=false;
else{
s1.deleteCharAt(i-2);
s=new String(s1);
textField.setText(s);
}
}
}
else{
if(!point){
textField.setText("0.");
operation=true;
total=false;
}
else point=false;
}
}
}
else toolkit.beep();
}
//小数点事件
public void point(){
if(!error&&!point)
point=true;
else toolkit.beep();
}
//数字键事件
public void number(String s){
if(!error){
if(!point){ //还没有按下小数点
if(!total&&!operation&&!number)
textField.setText(s+".");
if(total){
textField.setText(s+".");
first=true;
}
if(operation) textField.setText(s+".");
if(number){
if(textField.getText().equals("0."))
textField.setText(s+".");
else{
int i=textField.getText().length();
String temp=textField.getText().substring(0,i-1);
textField.setText(temp+s+".");
}
}
}
else{ //已经按下了小数点
textField.setText(textField.getText()+s);
if(operation){
textField.setText(s+".");
point=false;
}
}
number=true;
operation=false;
total=false;
}
else toolkit.beep();
}
//数字键监听器
class NumberAction implements ActionListener{
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand(); //得到按钮上的内容
number(s);
}
}
//键盘监听器
class MyKeyListener implements KeyListener{
public void keyPressed(KeyEvent e){
int code=e.getKeyCode(); //得到按键对应的整型数
char c=e.getKeyChar(); //得到按键的字符
String s=e.getKeyText(c);
switch(code){
case 106:operations("*");break;
case 107:operations("+");break;
case 109:operations("-");break;
case 111:operations("/");break; //按下的是运算符号则进行运算符号事件
case 10:
case 61:equal();break; //按下的是等于号或者是ENTER键则进行等于号事件
case 8:backspace();break; //按下的是删除键则进行删除事件
case 110:point();break; //按下的是小数点则进行小数点事件
default:break;
}
if((48<=code&&code<=57)||(96<=code&&code<=105))
number(s); //按下的是数字键则进行数字按钮事件
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
//运算符号事件
public void operations(String s){
if(!error&&!operation){
if(first){
String temp=textField.getText();
int i=temp.length();
if(temp.charAt(i-1)=='.'){
String temp1=temp.substring(0,i-1);
leftFloat=Float.valueOf(temp1).floatValue(); //最后一位为小数点,则此数为整型
rightFloat=leftFloat;
}
else{
leftFloat=Float.valueOf(temp).floatValue(); //最后一位不是小数点,则此数为float型
rightFloat=leftFloat;
}
}
else{
String temp=textField.getText();
int i=temp.length();
if(temp.charAt(i-1)=='.'){
String temp1=temp.substring(0,i-1);
rightFloat=Float.valueOf(temp1).intValue(); //最后一位为小数点,则此数为整型
}
else
rightFloat=Float.valueOf(temp).floatValue(); //最后一位不是小数点,则此数为float型
count();
if(!error){
String t=Float.toString(resultFloat);
int j=t.length();
if(t.charAt(j-1)=='0'&&t.charAt(j-2)=='.'){
String r=t.substring(0,j-2);
textField.setText(r+".");
}
else textField.setText(t);
}
} //else
symbol1=s.charAt(0);
first=false;
operation=true;
number=false;
total=false;
}
else toolkit.beep();
}
//运算符监听器
class OperationAction implements ActionListener{
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
operations(s);
}
}
}
public class JLab1002a{
public static void main(String[] args){
Calculator calculator=new Calculator("计算器");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -