JAVA语言程序设计一

来源:互联网 发布:中建八局投资公司知乎 编辑:程序博客网 时间:2024/06/02 19:09

设计题目一:设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。

本题目设计的方法是通过:

鼠标单击进行各种输入----通过单击各种数字按钮输入整数;通过单击运算符号按钮输入算术运算;通过单击计算器面板上包含=号,按钮输入等号,以及通过单击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);

        }

}