大作业时,遇到一个问题,让我编一个计算器java小程序.哪位热心观众,帮一下忙。好吗?

解决方案 »

  1.   

    import java.applet.*;import java.awt.*;
    public class jj extends Applet{
    public void paint(Graphics g){
    int x=2,y=1;
    switch(x+y){
    case 1:
    g.setColor(Color.red);g.drawString("i am 1",5,10);
    break;
    case 2:
    g.setColor(Color.red);g.drawString("i am 2",5,10);
    break;
    case 3:
    g.setColor(Color.red);g.drawString("i am 3",5,10);
    break;
    default:
    g.drawString("no found",5,10);
    }
    }
    }
      

  2.   

    程序在jdk1.4.2,jcreator3.50下编译通过,在命令窗口下可能不通过。
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.event.*;/**计算器程序<br>
     *@author Universe_void
     *@version 03,1,2006
     *
     */
     
    public class JiSuanQi extends JFrame implements ActionListener{
     double timeStart;
     
      JPanel jp1,jp2,jp3,jp;
      JLabel jl;
      JTextField jtf;
      JButton jb [];
      JButton jbsuan[];
      JButton jbdeng,jbdian,jbclear,jbsqrt;
     
     BorderLayout borderlayout;
      GridLayout gridlayout;
      
      Font font;
      Toolkit tkit;
      
       double fristNumber;//保存第一个要运算的DOUBLE 数。
      double secondNumber;//保存第二个要运算的DOUBLE 数。
      
      boolean isFristNumber;//判断是否为要运算的第一个数。
      boolean isPress;//
      
      double result;//保存两个数运算的结果的DOUBLE 数。
      
      String textString1;//保存第一个要运算String Number。
      String textString2;//保存第二个要运算String Number。
      String runString;//保存操作的是什么运算符ring Number。 private JiSuanQi (){
     
      isFristNumber=true;
     
        textString1=new String("");
        textString2=new String("");  runString=new String("");
     
      tkit=Toolkit.getDefaultToolkit();
      Dimension screenSize=tkit.getScreenSize();
      Dimension frameSize=this.getSize();
      if(frameSize.height>screenSize.height)
         frameSize.height=screenSize.height;
      if(frameSize.width>screenSize.width)
         frameSize.width=screenSize.width;
      this.setLocation((screenSize.width-frameSize.width)/3,(screenSize.height-frameSize.height)/3);      
         
      jp1=new JPanel();//初始化4个面板  
        jp2=new JPanel();
        jp3=new JPanel();
        jp=new JPanel();
        
        jp1.setBackground(Color.blue);
        
        font=new Font("幼体",Font.BOLD,14);
        
        jl=new JLabel("显示框:");
        jtf=new JTextField("0.0",12);
        jtf.setBackground(Color.blue);
        jl.setFont(new Font("幼体",Font.BOLD,12));
        jtf.setFont(new Font("幼体",Font.BOLD,12));
        
        jb =new JButton[10];//0到9的JButton
        for(int i=0;i<10;i++){//初始化0到9的10个JButton
           jb[i]=new JButton(new Integer(i).toString());
           jb[i].setFont(font);
           jb[i].addActionListener(this);
           
        }
        jbsuan=new JButton[4];    jbsuan[0]=new JButton("+");
        jbsuan[1]=new JButton("-");
        jbsuan[2]=new JButton("*");
        jbsuan[3]=new JButton("/");
        
        jbsuan[0].addActionListener(this);
        jbsuan[1].addActionListener(this);
        jbsuan[2].addActionListener(this);
        jbsuan[3].addActionListener(this);
        
        jbdeng=new JButton("=");
        jbdian=new JButton(".");
        jbsqrt=new JButton("开方");
        jbclear=new JButton("清除");
        //=new JButton("-/+");
        
        jbdeng.addActionListener(this);
        jbdian.addActionListener(this);
        jbsqrt.addActionListener(this);
        jbclear.addActionListener(this);
        //jbjianorjia.addActionListener(this);
        
        jbsuan[0].setFont(font);
        jbsuan[1].setFont(font);
        jbsuan[2].setFont(font);
        jbsuan[3].setFont(font);
        jbdeng.setFont(font);
        jbdian.setFont(font);
        //jbjianorjia.setFont(font);
        jbsqrt.setFont(font);
        jbclear.setFont(font);
        
       borderlayout=new BorderLayout();//jp的layouter
        gridlayout=new GridLayout(4,4,2,2);//jp2的layouter    jtf.setEditable(false);//使得JTextField 不可以编辑
        setTitle("计算器:");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);//使得JFrame窗口不可以改变 
        setSize(250,220);
        setForeground(Color.orange);
        
        jp.setLayout(borderlayout);
        this.getContentPane().add(jp);    jp.add("North",jp1);
        jp.add("Center",jp2);
        jp.add("South",jp3);
        
        jp1.add(jl);
        jp1.add(jtf);
        
        jp2.setLayout(gridlayout);    for(int i=0;i<10;i++){
         jp2.add(jb[i]);
        }
        
        jp2.add(jbsuan[0]);
        jp2.add(jbsuan[1]);
        jp2.add(jbsuan[2]);
        jp2.add(jbsuan[3]);
        jp2.add(jbdian);
        jp2.add(jbdeng);
        
        jp3.add(jbsqrt);
        jp3.add(jbclear);
        //jp3.add(jbjianorjia);
        
        setVisible(true);//
     }
      
      public void actionPerformed(ActionEvent e){
       Object object=e.getSource();
       //处理点操作。
       if(object==jbdian&&!isPress&&isFristNumber){
       setFristNumber(jbdian.getText());
       isPress=true;
       }
       if(object==jbdian&&!isPress&&!isFristNumber){
       setSecondNumber(jbdian.getText());
       isPress=true;
       }
       //保存第一个数操作。
       for(int i=0;i<10;i++){
        if((object==jb[i])&&isFristNumber){
            //if(object==jbjianorjia){
            
             //}
         setFristNumber(jb[i].getText());
        
         }
        }
        //保存第二个数操作。
       for(int i=0;i<10;i++){
        if((object==jb[i])&&!isFristNumber){
         setSecondNumber(jb[i].getText());
        
         }
        }
      //判断是什么运算符。  
       if(object==jbsuan[0]|object==jbsuan[1]|object==jbsuan[2]|object==jbsuan[3]){ 
        if(object==jbsuan[0]&&isFristNumber){
         getYunSuanFu(jbsuan[0].getText());
         }
         if(object==jbsuan[1]&&isFristNumber){
         getYunSuanFu(jbsuan[1].getText());
         }
         if(object==jbsuan[2]&&isFristNumber){
         getYunSuanFu(jbsuan[2].getText());
         }
         if(object==jbsuan[3]&&isFristNumber){
         getYunSuanFu(jbsuan[3].getText());
         }
       }  
        //判断等号操作。
      if(object==jbdeng&&!isFristNumber){
           showResult();
      }
        //判断Clear操作。
      if(object==jbclear){
         clearText();
      }
        //判断Sqrt操作。
      if(object==jbsqrt){
          showSqrt();
      }
     }
      
      void setFristNumber(String s){
      jtf.setText("");
      jtf.setText((textString1+s));
      textString1+=s;
      fristNumber=new Double(textString1).doubleValue();
      }  private void setSecondNumber(String s){
       jtf.setText("");
       jtf.setText((textString2+s));
      textString2+=s;
      secondNumber=new Double(textString2).doubleValue();
      }

      private void getYunSuanFu(String s){
       jtf.setText("");
       isFristNumber=false;
       if(s.equals("+")){
           runString=s;
         }
         if(s.equals("-")){
         runString=s;
          }
         if(s.equals("*")){
           runString=s;
         }
         if(s.equals("/")){
            runString=s;
         }
        isPress=false;  }

      private void showResult(){
        if(runString.equals("+")){
         result=fristNumber+secondNumber;
         }
        if(runString.equals("-")){
         result=fristNumber-secondNumber;
           }
        if(runString.equals("*")){
         result=fristNumber*secondNumber;
         }
        if(runString.equals("/")){
           try{
            result=fristNumber/secondNumber;
            }catch(Exception e){
              jtf.setText("除数不能为零!");
            }
         }
      
         jtf.setText(new Double(result).toString());
         fristNumber=result;
         secondNumber=0;
         isFristNumber=true;
         textString1="";
         textString2="";
         runString="";
         result=0;
         isPress=false;
      }
      
      private void clearText(){
         jtf.setText("");
         fristNumber=0;
         secondNumber=0;
         isFristNumber=true;
         textString1="";
         textString2="";
         runString="";
         result=0;
         isPress=false;
      }
      
      private void showSqrt(){
       fristNumber=Math.sqrt(fristNumber);
       jtf.setText(new Double(fristNumber).toString());
       isPress=false;
      }  public static void main(String [] args){
       double timeStart =System.currentTimeMillis();
       try{
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//   }catch(Exception e){} 
       
      new JiSuanQi();
      double timeEnd =System.currentTimeMillis();
      
      System.out.println("Programe runs time:"+((timeEnd-timeStart)/1000)+ "  秒  .  ");
    }  }