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

📄 jlab1002a.java

📁 java实验时编写的一个计算器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         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 + -