您的位置:首页 > 编程语言 > Java开发

写Java计算器小感

2010-09-27 17:46 190 查看
这周也写了写简单的计算器,当是练习一下图形界面里一些组件类的运用吧。
package addEvent;
import java.lang.*;
import java.awt.*;
import java.awt.event.*; 
import javax.swing.*; 
public class calculate extends Frame
{
   double result = 0, tmp = 0;
   int op = 0; //0:无,1:+,2:-,3:*,4:/ 
   String num = "0"; 
   JTextField T1; 
   Button B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,
          B11,B12,B13,B14,B15,B16,B17,B18,B19; 
   public calculate()
   {
      this.setLayout(null);  
      T1 = new JTextField(num) ;
      T1.setBounds(20,30,158,28);
      T1.setHorizontalAlignment(JTextField.RIGHT );//字靠右
      T1.setEditable(false);//不许在 T1 内编辑
      T1.setBackground(Color.WHITE); 
      this.add(T1);
      
      B1 = new Button("1");
      B1.setBounds(20,65,35,25);
      B1.setForeground(Color.BLUE);
      B1.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“1”
          click_print("1");        
        }        
      });
      this.add(B1);
      
      B2 = new Button("2");
      B2.setBounds(60,65,35,25);
      B2.setForeground(Color.BLUE);
      B2.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“2”
          click_print("2");         
        }        
      });
      this.add(B2);
  
      B3 = new Button("3");
      B3.setBounds(100,65,35,25);
      B3.setForeground(Color.BLUE);
      B3.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“3”
          click_print("3");         
        }        
      });
      this.add(B3); 
      
      B4 = new Button("4");
      B4.setBounds(20,95,35,25);
      B4.setForeground(Color.BLUE);
      B4.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“4”
          click_print("4");
        }        
      });
      this.add(B4);
      
      B5 = new Button("5");
      B5.setBounds(60,95,35,25);
      B5.setForeground(Color.BLUE);
      B5.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“5”
          click_print("5");        
        }        
      });
      this.add(B5);
  
      B6 = new Button("6");
      B6.setBounds(100,95,35,25);
      B6.setForeground(Color.BLUE);
      B6.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“6”
          click_print("6");         
        }        
      });
      this.add(B6);       
      
      B7 = new Button("7");
      B7.setBounds(20,125,35,25);
      B7.setForeground(Color.BLUE);
      B7.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“7”
          click_print("7");         
        }        
      });
      this.add(B7);
      
      B8 = new Button("8");
      B8.setBounds(60,125,35,25);
      B8.setForeground(Color.BLUE);
      B8.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“8”
          click_print("8");         
        }        
      });
      this.add(B8);
  
      B9 = new Button("9");
      B9.setBounds(100,125,35,25);
      B9.setForeground(Color.BLUE);
      B9.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“9”
          click_print("9");         
        }        
      });
      this.add(B9);
            
      B10 = new Button("0");
      B10.setBounds(20,155,35,25);
      B10.setForeground(Color.BLUE);
      B10.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“0”
          click_print("0");         
        }        
      });
      this.add(B10);           
      
      B11 = new Button("+");
      B11.setBounds(140,65,35,25);
      B11.setForeground(Color.RED);
      B11.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“+”
           calcu();
           op = 1;
           num = "";
        }        
      });
      this.add(B11);                     
      B12 = new Button("-");
      B12.setBounds(140,95,35,25);
      B12.setForeground(Color.RED);
      B12.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“-”
          calcu();
          op = 2;  num = "";                    
        }        
      });
      this.add(B12); 
              
      B13 = new Button("*");
      B13.setBounds(140,125,35,25);
      B13.setForeground(Color.RED);
      B13.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“*”
           calcu();
           op = 3;  num = "";
        }        
      });
      this.add(B13);      
              
      B14 = new Button("/");
      B14.setBounds(140,155,35,25);
      B14.setForeground(Color.RED);
      B14.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“/”
           calcu();
           op = 4;  num = "";
        }        
      });
      this.add(B14);
      
      B15 = new Button(".");
      B15.setBounds(60,155,35,25);
      B15.setForeground(Color.BLUE);
      B15.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“.”
          click_print(".");
        }        
      });
      this.add(B15);
      
      B16 = new Button("C");
      B16.setBounds(100,155,35,25);
      B16.setForeground(Color.RED);
      B16.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“C”归零
           op = 0;  tmp = 0;  result = 0;           
           T1.setText( num="0" );
         
        }        
      });
      this.add(B16);
      
      B17 = new Button("+/-");
      B17.setBounds(20,185,35,25);
      B17.setForeground(Color.BLUE);
      B17.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        {
           click_print("-");
          
        }
      });
      this.add(B17); 
      
      B18 = new Button("←");
      B18.setBounds(60,185,35,25);
      B18.setForeground(Color.RED);
      B18.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //单击按钮“←”
             num = num.substring(0,num.length()-1); 
             T1.setText(num);
        }  
      });
      this.add(B18);
                   
      B19 = new Button("=");
      B19.setBounds(100,185,75,25);
      B19.setForeground(Color.RED);
      B19.addMouseListener( new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        { //按[=]                 
          num = calcu();
          op = 0;
        }
      });
      this.add(B19);                         	
      this.setBounds(200,100,200,230);
      this.setTitle("简单计算器");
      this.setBackground(Color.PINK); 
      this.addWindowListener( new WindowAdapter()
      {
         public void windowClosing(WindowEvent e)
         {
           System.exit(0);  
         }
      });
      this.setVisible(true);
   } 
   public void click_print(String s)
   {  
      if( s.equals(".") )
      {
        if( num.indexOf('.')!=-1 )
           return; //已经有小数点
        if(num.equals(""))
          num = "0";   
      }
      
      if(num.equals("0"))
      {   //现在 num 为 0  
        if(s.equals("0"))       
          return;  //原来的 num 已是 "0" 后面不能再加 "0"      
        else if( !s.equals("."))
          num = ""; //现在输入的若不是".",不能加在"0"之后
      }      
      num = num + s; //将现在输入的数字加在 num 之后
      T1.setText(num);        
   }
   public String calcu()
   { 
      String resultStr;
      tmp = Double.parseDouble( num ); 
      switch(op)
      {      
         case 1: // +
           result = result + tmp;                      
           break;
         case 2: // -
           result = result - tmp;  
           break;
         case 3: //* 
           if(!num.equals("")) 
              result = result * tmp;                   
           break;
         case 4: // /
           if(!num.equals(""))
           {   
             if(tmp==0)  //不可除 0
               JOptionPane.showMessageDialog(null, "无法除零");
             else
               result = result / tmp;                              
           }
           break;
         case 0: //val action
           result = tmp;  
           //把目前的 num 记在 result
      } 
      if( result == (long)result )
          resultStr = String.valueOf((long)result); //结果是整数
       else      
          resultStr = String.valueOf(result);   
      T1.setText(resultStr); 
      tmp = 0;   //tmp 归零        
      return resultStr;
   }
   public static void main(String[] para)
   {
      new calculate(); 
   }
}


其实,用c语言写过计算器的同学应该是大有所感的,记得自己之前用c写计算器那是足足花了3周,并且感觉写出来的效果真的很粗糙。但是,当我们为只要这样只要去运用组件类就能写出这么漂亮的界面而兴奋时,我自己觉得也有问题出现在脑海中。譬如,在用c语言想要实现某个功能时,或许我们可能有不同的方法去实现该功能,我们就会开动脑筋去想,怎么写才是最精简的?怎样才能用最少的代码最好地实现这个功能呢?其实在这些思考中,如果当你找到你认为的perfect的方法时,我们或许为之感到兴奋,颇有成就感。但是,我自己觉得,Java中这些组件的存在,确实为我们提供了很大的方便,然而,很多时候都不用我们去想怎么将它做的更精练,因为只要你想要实现什么,你只要找到对应功能的类,你就按那些方法的用法套进去就ok了,所以自己有这样的疑问:这样是不是降低了对我们逻辑思维的要求了呢?如果实现某一个特定的功能,人人都是用同样的方法去做,那么,做出来有什么不同呢?而怎样才能让你自己的程序与众不同呢?

可能也是因为自己学得不深,才会有这样的感觉吧,不过确实自己在想,每个人都是用这些类,这些方法实现了这样的功能,究竟怎样才能叫做做得更好呢?希望大家多多说说自己的看法,建议,让我疑惑揭开些许哈,谢啦~~

运行的界面如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: