JAVA語言程序設計一

設計題目一:設計GUI界面的計算器程序,用戶可以通過鼠標依次輸入參加計算的數值,進行加、減、乘、除混合運算。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本題目設計的方法是通過:

鼠標單擊進行各種輸入----通過單擊各種數字按鈕輸入整數;通過單擊運算符號按鈕輸入算術運算;通過單擊計算器面板上包含=號,按鈕輸入等號,以及通過單擊CE按鈕清除輸入。

程序輸出----面板輸出結果或者輸出錯誤信息(系統出錯誤時)。

//王睿的MyCalculator
import java.awt.*;

import java.awt.event.*;

 

public class MyCalculator extends WindowAdapter implements ActionListener{

   private Frame f;

   private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,

b13,b14,b15,b16,b17,b18,b19;

   private TextField f1;

  

   private double ans = 0;//臨時存放結果,結果最後給final

   private double n1=0;//定義爲存放要輸入的數字,初值爲沒有輸入數字

   private int op=0;//初值爲沒選擇任何運算

   private boolean hasop=false;//初值爲沒有按下運算符號

   private boolean dot=false;//定義爲運算中小數運算,初值爲無小數

 

   public static void main(String args[]){

        MyCalculator be=new MyCalculator();

        be.go();

   }

   public void go(){

      f=new Frame("王睿的計算器");

     

f.setLayout(new GridLayout(4,4));

f1=new TextField("",10);

      b1=new Button("1");

      b2=new Button("2");

      b3=new Button("3");

      b4=new Button("CE");

      b5=new Button("4");

      b6=new Button("5");

      b7=new Button("6");

      b8=new Button("+");

      b9=new Button("7");

      b10=new Button("8");

b11=new Button("9");

b12=new Button("-");

      b13=new Button("*");

      b14=new Button("0");

      b15=new Button(".");

      b16=new Button("/");

      b17=new Button("=");

      b18=new Button("(");

      b19=new Button(")");

 

      f.add(f1);

      f.add(b1);

      f.add(b2);

      f.add(b3);

      f.add(b4);

      f.add(b5);

      f.add(b6);

      f.add(b7);

      f.add(b8);

      f.add(b9);

      f.add(b10);

      f.add(b11);

      f.add(b12);

      f.add(b13);

      f.add(b14);

      f.add(b15);

      f.add(b16);

      f.add(b17);

      f.add(b18);

      f.add(b19);

 

      f.pack();

      f.setVisible(true);

 

      f.add(f1,"Center");

 

      f.addWindowListener(this);

      f.setSize(300,150);

      f.setVisible(true);

   }

   //實現ActionListener接口中的actionPerformed()方法

   public void actionPerformed(ActionEvent e){

                String d = e.getActionCommand();

        char c = d.charAt(0);

       

        switch(c)

        {

        case '+'://首次按下運算符號且在其之前

        case '-'://沒有數字按下且沒有連按兩次

        case '*':

        case '/'://則先把剛剛的結果計算出來

            if (op!='0' && !hasOp) //按下等號

                Result();

                n1 = Double.valueOf(final.getText()).doubleValue();

                    op = c;

                    hasOp = true;

                dot = false;

            break;

        case '=': //按下等號

            Result();

            break;

        case '.': //按下小數點

            if ( !dot )

            {

            final.setText(final.getText()+".");

            dot = true;

            }

            break;

        case 'CE': //按下清除

            n1 = 0;

            op = '0';

            hasOp = false;

            dot = false;

            final.setText("0");

            break;

            default: //按下數字正常執行

                       if (final.getText().equals("0") || hasOp)

                   {

                final.setText(d);

                hasop = false;

                    }

                    else

                final.setText(final.getText()+d);

        }

    }

 

       //計算結果

       private void Result()

    {

        double n2 = Double.valueOf(final.getText()).doubleValue();

   

        switch (op)

        {

             case '+':

            ans = n1 + n2;

            break;

             case '-':

            ans = n1 - n2;

            break;

             case '*':

            ans = n1 * 2;

            break;

             case '/':

            ans = n1 / n2;

            }

   

        op = '0';

        hasOp = true;

        dot = false;

        n1 = ans;

        final.setText(String.valueOf(ans));

    }

      

       //覆蓋WindowAdapter類中的 windowClosing()方法

       public void windowClosing(WindowEvent e){

                System.exit(0);

        }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章