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

📄 calculate.java

📁 使用java编写的科学运算器
💻 JAVA
字号:
/**
 * AWT Sample application
 *
 * @author 
 * @version 1.00 07/11/02
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.StringBuffer;
/**
 * Sample application using Frame.
 *
 * @author 
 * @version 1.00 07/11/02
 */
 public class Calculate {
    
    public static void main(String[] args) {
        // Create application frame.
        CalculateFrame frame = new CalculateFrame();
        
        // Show frame
        frame.setVisible(true);
    }
}

 
 class CalculateFrame extends Frame implements ActionListener{
    
    /**
     * The constructor.
     *
     */ 
      String num=new String();
      Integer [] number=new Integer[3];
      
      int flag=0;      
        	
        TextField text=new TextField();
        Panel box=new Panel();
     public CalculateFrame() {
                
        MenuBar menuBar = new MenuBar();
        Menu menuFile = new Menu();
        MenuItem menuFileExit = new MenuItem();
        
        
        menuFile.setLabel("File");
		menuFileExit.setLabel("Exit");
		draw();

        
        // Add action listener.for the menu button
        menuFileExit.addActionListener
        (
            new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    CalculateFrame.this.windowClosed();
                }
            }
        ); 
        menuFile.add(menuFileExit);
        menuBar.add(menuFile);
        
        setTitle("Calculate");
        setMenuBar(menuBar);
        setSize(new Dimension(200, 200));
        
        // Add window listener.
        this.addWindowListener
        (
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    CalculateFrame.this.windowClosed();
                }
            }
        ); 
        
        
    }
    	 public void draw()
	{
		setLayout(new BorderLayout());
        //TextField text=new TextField();
        //Panel box=new Panel();
        add(text,BorderLayout.NORTH);
        add(box,BorderLayout.CENTER);
        
        
        
        box.setLayout(new GridLayout(4,4));
        Button num1=new Button("1");
        box.add(num1);
        num1.addActionListener(this);
        Button num2=new Button("2");
        box.add(num2);
        num2.addActionListener(this);
        Button num3=new Button("3");
        box.add(num3);
        num3.addActionListener(this);
        Button num4=new Button("+");
        box.add(num4);
        num4.addActionListener(this);
        Button num5=new Button("4");
        box.add(num5);
        num5.addActionListener(this);
        Button num6=new Button("5");
        box.add(num6);
        num6.addActionListener(this);
        Button num7=new Button("6");
        box.add(num7);
        num7.addActionListener(this);
        Button num8=new Button("-");
        box.add(num8);
        num8.addActionListener(this);
        Button num9=new Button("7");
        box.add(num9);
        num9.addActionListener(this);
        Button num10=new Button("8");
        box.add(num10);
        num10.addActionListener(this);
        Button num11=new Button("9");
        box.add(num11);
        num11.addActionListener(this);
        Button num12=new Button("*");
        box.add(num12);
        num12.addActionListener(this);
        Button num13=new Button("C");
        box.add(num13);
        num13.addActionListener(this);
        Button num14=new Button(".");
        box.add(num14);
        num14.addActionListener(this);
        Button num15=new Button("=");
        box.add(num15);
        num15.addActionListener(this);
        Button num16=new Button("/");
        box.add(num16);
        num16.addActionListener(this);
        
     }   
    public void actionPerformed(ActionEvent e) //noerror would happen and support negative but not float 
        {
//int flag=0;
        	Button st=new Button();
        	String lable=new String();
        //	String num=new String();
          //  int [] number;
          //  number=new int[3];
        	st=(Button)e.getSource();
        	lable=st.getActionCommand();
        	if(lable=="1"||lable=="2"||lable=="3"||lable=="4"||lable=="5"||lable=="6"||lable=="7"||lable=="8"||lable=="9"||lable==".")
        	{//	System.out.println("here");
        	    num=num+lable;
        	//	System.out.println(num);
        		text.setText(num);
        	}
        		else{ if(lable=="+"||lable=="-"||lable=="*"||lable=="/")
        		      {	  if(flag==0)
        			      { number[flag++]=trans(num);
		        		/*	switch (lable)//because switch can only receive a integer;
		        			{ case "+":number[flag++]=0;break;
		        			  case "-":number[flag++]=1;break;
		        			  case "*":number[flag++]=2;break;
		        			  case "/":number[flag++]=3;break;
		        			}*/
		        			if(lable=="+")
		        			number[flag++]=0;
		        			else {if(lable=="-")
		        			 	  number[flag++]=1;	
		        			 	  else
		        		 	    {  if(lable=="*")
		        			 	  	    number[flag++]=2;
		        			 	  		else
		        			 	  		number[flag++]=3;
			        			 	 }
			        			 }
	        			    text.setText(lable);
	        			    num="";
	        			   }
	        			 
        			     else {if(flag==1)
		        				{/* switch (lable)
				        			{ case "+":number[flag++]=0;break;
				        			  case "-":number[flag++]=1;break;
				        			  case "*":number[flag++]=2;break;
				        			  case "/":number[flag++]=3;break;
				        			}*/
				        			if(num!="")
				        			number[0]=trans(num);
				        		//	 System.out.println("haha");
				        			if(lable=="+")
		        					number[flag++]=0;
		        					else {if(lable=="-")
		        			 			  number[flag++]=1;	
		        			 			  else
		        			 	   			 {  if(lable=="*")
												number[flag++]=2;
		        			 	  				else
		        			 	  				number[flag++]=3;
		        			 	  			 }
		        			 	 	 	  }
				        			text.setText(lable);
				        			num="";
				        		}
		        	    	else
		        		   {    //  System.out.println("ha");
		        		   			number[flag]=trans(num);
        						  switch(number[1])//because switch can only receive a integer;
        						  { case 0:number[0]+=number[2];break;
        						    case 1:number[0]-=number[2];break;
        						    case 2:number[0]*=number[2];break;
        						    case 3:number[0]/=number[2];break;
        						  } 
        						    flag=1;
        						    text.setText(number[0].toString());
        						  	if(lable=="+")
		        					number[flag++]=0;
		        					else {if(lable=="-")
		        			 			  number[flag++]=1;	
		        			 			  else
		        			 	   			 {  if(lable=="*")
												number[flag++]=2;
		        			 	  				else
		        			 	  				number[flag++]=3;
		        			 	  			}
		        			 	 	 	  }
        						 
        						 
        						     num="";  	
        				   }
        				  }
        				 
        		}
        			else{ if(lable=="=")
        				{
        					if(flag==0)//press a num or press "="only
        					{number[flag++]=trans(num);
        					 text.setText("="+num);
        					 num="";
        					}
        					else {if(flag==1)//press anum and a symbol then "="
        						   {text.setText("="+number[0].toString());num="";}
        						 else
        						   { //System.out.println(number[flag]);
        						     number[flag]=trans(num);
        						    // System.out.println(number[flag]);
        						     switch(number[1])
        						     { case 0:number[0]+=number[2];/* System.out.println("hi");System.out.println(number[2])*/;break;
        						      case 1:number[0]-=number[2];break;
        						      case 2:number[0]*=number[2];break;
        						      case 3:number[0]/=number[2];break;
        						     
        						     } 
        						   	flag=1;text.setText("="+number[0].toString());
        						   	num="";
        						   	}
        		
        						 }	
        		     }
        				else
        				{flag=0;
        				 text.setText(null);
        				 num="";
        				 }
        	     }
        	       
     } 
     }
    public  int  trans(String ags) 
	{	
		int a=0;
		try
		{	
		
            StreamTokenizer st=new StreamTokenizer (new BufferedReader(new StringReader(ags)));
		
			st.nextToken();
		
			if(st.ttype==st.TT_NUMBER)
		    a=(int)st.nval;
			else
			a= 0;
		}

		
		catch(IOException e)
		{	System.out.println("error");
		}
		return a;
    }
    /**
     * Shutdown procedure when run as an application.
     */
    protected void windowClosed() {
    	
    	// TODO: Check if it is save to close the application
    	
        // Exit application.
        System.exit(0);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -