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

📄 calculator.java

📁 一个用Java写的计算器程序。由于初次用做Java做程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Class.java * * Created on 2004年10月2日, 下午9:16 *//** * * @author  hpj *///因为第一次计算的结果,直接作为下一次的初始值的一部分或全部//若要进行第二次计算,请重载Applet,或用上一次的结果*0,将不影响您的第二次使用import java.awt.*;import java.awt.event.*;import java.util.*;import java.applet.Applet;public class Calculator extends Applet implements ActionListener{    protected double data[]={0.0,0.0,0.0,0.0};//data[0]始终显示在计算器上的数据,data[1,2,3]用于临时存放三个计算变量    protected int simple[]={11,11};//存贮运算符号,11表示+号    protected int t=1,j=0;//用于标志小数;t=1时为整数;j用于纪录小数位数    protected double k;//计算每次输入的小数值    protected Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bjia,bjian,bcheng,bchu,bdian,bdeng;//对应0…9,+,-,*,/,.,=    protected TextField tf;//输出文本域        protected Object makebutton(String name, GridBagLayout gridbag, GridBagConstraints c){//创建按钮        Button button=new Button(name);        gridbag.setConstraints(button, c);        add(button);        button.addActionListener(this);        return button;    }        protected Object maketextfield(String name, GridBagLayout gridbag, GridBagConstraints c){//创建文本域        TextField tf=new TextField("0.0",20);        gridbag.setConstraints(tf,c);        add(tf);        tf.setEditable(false);        tf.addActionListener(this);        return tf;    }        public void init(){//用GridBagLayout排列界面        GridBagLayout gridbag=new GridBagLayout();        GridBagConstraints c=new GridBagConstraints();        setFont(new Font("Helvetica", Font.PLAIN, 24));        setLayout(gridbag);        c.fill=GridBagConstraints.BOTH;//使组建完全占满显示区域        c.weightx=1.0;//容器扩大时,自动占满额外空间(水平和竖直方向)        c.weighty=1.0;        c.gridwidth=GridBagConstraints.REMAINDER;  //使TextField为最后一个元素,并影响到下一个元素              tf=(TextField)maketextfield("tf",gridbag,c);        c.gridwidth=1;        b7=(Button)makebutton("7",gridbag,c);//创建按钮b7        b8=(Button)makebutton("8",gridbag,c);        b9=(Button)makebutton("9",gridbag,c);        c.gridwidth=GridBagConstraints.REMAINDER;        bjia=(Button)makebutton("+",gridbag,c);        c.weightx=0.0;//恢复默认值        c.gridwidth=1;//每个元素占用一个网格        b4=(Button)makebutton("4",gridbag,c);               b5=(Button)makebutton("5",gridbag,c);               b6=(Button)makebutton("6",gridbag,c);                c.gridwidth=GridBagConstraints.REMAINDER;        bjian=(Button)makebutton("-",gridbag,c);         c.gridwidth=1;        b1=(Button)makebutton("1",gridbag,c);        b2=(Button)makebutton("2",gridbag,c);                b3=(Button)makebutton("3",gridbag,c);        c.gridwidth=GridBagConstraints.REMAINDER;        bcheng=(Button)makebutton("*",gridbag,c);          c.gridwidth=1;        b0=(Button)makebutton("0",gridbag,c);        bdian=(Button)makebutton(".",gridbag,c);        bdeng=(Button)makebutton("=",gridbag,c);        bchu=(Button)makebutton("/",gridbag,c);        c.weighty=0.0; //恢复默认值               setSize(400,300);//设定容器大小,如果调用函数使用了getPreferredSize函数,那么将不起作用    }        public static void main(String args[]){        Frame f=new Frame("Calculator");        Calculator tocow=new Calculator();        tocow.init();//调用创建界面函数        f.add("Center", tocow);        f.pack();        f.setSize(f.getPreferredSize());        f.setVisible(true);    }        public void actionPerformed(ActionEvent e) { //完成具体的计算功能        if(data[0]==0){//计算器的初始值为0            if(back(e)==0){//第一次按下为0,则:                if(t==1){                    tf.setText("0.0");                 }                else{//已经按下点号,则“j+1”,用于纪录下一位数字离小数点的距离                    k=0;                    j++;                }                 }            else{//第一次按下不为0                    if(t==1){                        if(back(e)==10)                            t=0;                        else{                            if(back(e)!=15){//没有按下“=”                                if(!((back(e)==11)||(back(e)==12)||(back(e)==13)||(back(e)==14))){//不是"+","-","*","/"                                    data[0]=data[0]*10+back(e);                                    tf.setText(""+data[0]);                                    }                                else{//如果按了“/” 注意除数不能为0,否则计算机处理为Infinity                                    if(data[1]==0){// 放入data[1]里                                        data[1]=data[0];                                        data[0]=0;                                        simple[0]=back(e);                                        }                                    else if(data[1]!=0&&data[2]==0){//放如data[2]里                                        data[2]=data[0];                                        data[0]=0;                                        simple[1]=back(e);                                        }                                    else{//放如data[3]里                                         data[3]=data[0];                                         data[0]=0;                                         }                                    }                                }                            else{//按下“=”计算完毕                                if(data[0]!=0){//把最后一个数字写入data数组中                                    if(data[1]==0){                                        data[1]=data[0];                                        data[0]=0;                                        }                                    else if(data[1]!=0&&data[2]==0){                                        data[2]=data[0];                                        data[0]=0;                                                                        }                                    else{                                        data[3]=data[0];                                        data[0]=0;                                        }                                tf.setText(""+calculator());                                data[0]=calculator();//自动纪录结果,可以用于第二次计算                                data[1]=data[2]=data[3]=0;//初始化为开始状态                                simple[0]=simple[1]=11;                                }                                else{                                    tf.setText(""+calculator());                                    data[0]=calculator();                                    data[1]=data[2]=data[3]=0;                                    simple[0]=simple[1]=11;                                                                  }//按下“=”计算完毕                            }                        }                    }                                        else{//开始计算按下.号,即进行浮点数运算                        if(back(e)!=15){//没有按下“=”                             if(!((back(e)==11)||(back(e)==12)||(back(e)==13)||(back(e)==14))){//不是"+","-","*","/"                                 if(back(e)==10)                                     t=0;                                 else{                                     k=back(e);                                     j++;                                     }                                 for(int i=j;i>0;i--){                                     k=(double)k/10;                                     }                                 data[0]+=k;                                 tf.setText(""+data[0]);                                 }                             else{//如果按了“/” 注意除数不能为0                                 t=1;//恢复为整数,并且计数器累计清零                                 j=0;                                 if(data[1]==0){// 放如data[1]里                                     data[1]=data[0];                                     data[0]=0;                                     simple[0]=back(e);                                     }                                 else if(data[1]!=0&&data[2]==0){//放如data[2]里                                     data[2]=data[0];                                     data[0]=0;                                     simple[1]=back(e);                                    }                                else{//放如data[3]里                                    data[3]=data[0];                                    data[0]=0;                                    }                                }                            }                        else{//按下“=”计算完毕                            t=1;//恢复为整数,并且计数器清零                            j=0;                            if(data[0]!=0){//把最后一个数字写入data数组中                                if(data[1]==0){                                    data[1]=data[0];                                    data[0]=0;                                    }                                else if(data[0]!=0&&data[1]!=0&&data[2]==0){                                    data[2]=data[0];                                    data[0]=0;                                                                    }                                else{                                    data[3]=data[0];                                    data[0]=0;                                    }                            tf.setText(""+calculator());                            data[0]=calculator();                            data[1]=data[2]=data[3]=0;                            simple[0]=simple[1]=11;                            }                             else{                                tf.setText(""+calculator());                                data[0]=calculator();                                data[1]=data[2]=data[3]=0;                                simple[0]=simple[1]=11;                                t=1; 

⌨️ 快捷键说明

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