java 计算器编码

来源:互联网 发布:pureftpd mac 安装 编辑:程序博客网 时间:2024/05/01 03:23
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.lang.*;
  4. import javax.swing.*;
  5. public class ccextends Frame{
  6.     //声明三个面板的布局

  7.     GridLayout gl1,gl2,gl3;
  8.     Panel p0,p1,p2,p3;
  9.     JTextField tf1;
  10.     TextField tf2;
  11.     Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,
  12.     b12,b13,b14,b15,b16,b17,b18,
  13.     b19,b20,b21,b22,b23,b24,b25,b26;
  14.     StringBuffer str;
  15.     //显示屏所显示的字符串

  16.     double x,y;
  17.     //x和y都是运算数

  18.     int z;
  19.     //Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

  20.     static double m;
  21.     //记忆的数字

  22.     public cc(){
  23.         gl1=newGridLayout(1,4,10,0);
  24.         //实例化三个面板的布局

  25.         gl2=newGridLayout(4,1,0,15);
  26.         gl3=newGridLayout(4,5,10,15);
  27.         tf1=newJTextField(27);
  28.         //显示屏

  29.         tf1.setHorizontalAlignment(JTextField.RIGHT);
  30.         tf1.setEnabled(false);
  31.         tf1.setText("0");
  32.         tf2=newTextField(10);
  33.         //显示记忆的索引值

  34.         tf2.setEditable(false);
  35.         //实例化所有按钮、设置其前景色并注册监听器

  36.         b0=newButton("Backspace");
  37.         b0.setForeground(Color.red);
  38.         b0.addActionListener(new Bt());
  39.         b1=newButton("CE");
  40.         b1.setForeground(Color.red);
  41.         b1.addActionListener(new Bt());
  42.         b2=newButton("C");
  43.         b2.setForeground(Color.red);
  44.         b2.addActionListener(new Bt());
  45.         b3=newButton("MC");
  46.         b3.setForeground(Color.red);
  47.         b3.addActionListener(new Bt());
  48.         b4=newButton("MR");
  49.         b4.setForeground(Color.red);
  50.         b4.addActionListener(new Bt());
  51.         b5=newButton("MS");
  52.         b5.setForeground(Color.red);
  53.         b5.addActionListener(new Bt());
  54.         b6=newButton("M+");
  55.         b6.setForeground(Color.red);
  56.         b6.addActionListener(new Bt());
  57.         b7=newButton("7");
  58.         b7.setForeground(Color.blue);
  59.         b7.addActionListener(new Bt());
  60.         b8=newButton("8");
  61.         b8.setForeground(Color.blue);
  62.         b8.addActionListener(new Bt());
  63.         b9=newButton("9");
  64.         b9.setForeground(Color.blue);
  65.         b9.addActionListener(new Bt());
  66.         b10=newButton("/");
  67.         b10.setForeground(Color.red);
  68.         b10.addActionListener(new Bt());
  69.         b11=newButton("sqrt");
  70.         b11.setForeground(Color.blue); b11.addActionListener(new Bt());
  71.         b12=newButton("4"); b12.setForeground(Color.blue); b12.addActionListener(new Bt());
  72.         b13=newButton("5"); b13.setForeground(Color.blue); b13.addActionListener(new Bt());
  73.         b14=newButton("6"); b14.setForeground(Color.blue); b14.addActionListener(new Bt());
  74.         b15=newButton("*"); b15.setForeground(Color.red); b15.addActionListener(new Bt());
  75.         b16=newButton("%"); b16.setForeground(Color.blue); b16.addActionListener(new Bt());
  76.         b17=newButton("1"); b17.setForeground(Color.blue); b17.addActionListener(new Bt());
  77.         b18=newButton("2"); b18.setForeground(Color.blue); b18.addActionListener(new Bt());
  78.         b19=newButton("3"); b19.setForeground(Color.blue); b19.addActionListener(new Bt());
  79.         b20=newButton("-"); b20.setForeground(Color.red); b20.addActionListener(new Bt());
  80.         b21=newButton("1/X"); b21.setForeground(Color.blue); b21.addActionListener(new Bt());
  81.         b22=newButton("0"); b22.setForeground(Color.blue); b22.addActionListener(new Bt());
  82.         b23=newButton("+/-"); b23.setForeground(Color.blue); b23.addActionListener(new Bt());
  83.         b24=newButton("."); b24.setForeground(Color.blue); b24.addActionListener(new Bt());
  84.         b25=newButton("+"); b25.setForeground(Color.red); b25.addActionListener(new Bt());
  85.         b26=newButton("="); b26.setForeground(Color.red); b26.addActionListener(new Bt());
  86.         //实例化四个面板

  87.         p0=newPanel();
  88.         p1=newPanel();
  89.         p2=newPanel();
  90.         p3=newPanel();
  91.         //创建一个空字符串缓冲区

  92.         str=newStringBuffer();
  93.         //添加面板p0中的组件和设置其在框架中的位置和大小

  94.         p0.add(tf1);
  95.         p0.setBounds(10,25,300,40);
  96.         //添加面板p1中的组件和设置其在框架中的位置和大小

  97.         p1.setLayout(gl1);
  98.         p1.add(tf2);
  99.         p1.add(b0); p1.add(b1); p1.add(b2);
  100.         p1.setBounds(10,65,300,25);
  101.         //添加面板p2中的组件并设置其的框架中的位置和大小

  102.         p2.setLayout(gl2); p2.add(b3); p2.add(b4);
  103.         p2.add(b5); p2.add(b6); p2.setBounds(10,110,40,150);
  104.         //添加面板p3中的组件并设置其在框架中的位置和大小

  105.         p3.setLayout(gl3);//设置p3的布局

  106.         p3.add(b7); p3.add(b8); p3.add(b9); p3.add(b10);
  107.         p3.add(b11); p3.add(b12); p3.add(b13); p3.add(b14);
  108.         p3.add(b15); p3.add(b16); p3.add(b17); p3.add(b18);
  109.         p3.add(b19); p3.add(b20); p3.add(b21); p3.add(b22);
  110.         p3.add(b23); p3.add(b24); p3.add(b25); p3.add(b26);
  111.         p3.setBounds(60,110,250,150);
  112.         //设置框架中的布局为空布局并添加4个面板

  113.         setLayout(null);add(p0);add(p1);add(p2);
  114.         add(p3);setResizable(false);
  115.         //禁止调整框架的大小 //匿名类关闭窗口

  116.         addWindowListener(newWindowAdapter(){
  117.             public void windowClosing(WindowEvent e1){
  118.                 System.exit(0);
  119.                 }
  120.             });
  121.         setBackground(Color.lightGray);
  122.         setBounds(100,100,320,280);
  123.         setVisible(true);}
  124.     //构造监听器

  125.     class Bt implementsActionListener {
  126.         public void actionPerformed(ActionEvent e2){
  127.             try{
  128.                 if(e2.getSource()==b1)
  129.                     //选择"CE"清零

  130.                     { tf1.setText("0");
  131.                     //把显示屏清零

  132.                     str.setLength(0);
  133.                     //清空字符串缓冲区以准备接收新的输入运算数

  134.                     } else if(e2.getSource()==b2)
  135.                         //选择"C"清零

  136.                         { tf1.setText("0");
  137.                         //把显示屏清零

  138.                         str.setLength(0);
  139.                         } else if(e2.getSource()==b23)
  140.                             //单击"+/-"选择输入的运算数是正数还是负数

  141.                             { x=Double.parseDouble(tf1.getText().trim());
  142.                             tf1.setText(""+(-x));} else if(e2.getSource()==b25)
  143.                                 //单击加号按钮获得x的值和z的值并清空y的值

  144.                                 {
  145.                                 x=Double.parseDouble(tf1.getText().trim());
  146.                                 str.setLength(0);
  147.                                 //清空缓冲区以便接收新的另一个运算数

  148.                                 y=0d; z=0;} else if(e2.getSource()==b20)
  149.                                     //单击减号按钮获得x的值和z的值并清空y的值

  150.                                     { x=Double.parseDouble(tf1.getText().trim());
  151.                                     str.setLength(0); y=0d; z=1; } else if(e2.getSource()==b15)
  152.                                         //单击乘号按钮获得x的值和z的值并清空y的值

  153.                                         { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0); y=0d; z=2; }
  154.                                     else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值

  155.                                         { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0); y=0d; z=3; }
  156.                                     else if(e2.getSource()==b26)//单击等号按钮输出计算结果

  157.                                         { str.setLength(0);switch(z){ case 0 : tf1.setText(""+(x+y));
  158.                                         break;case 1 : tf1.setText(""+(x-y));break;case 2 : tf1.setText(""+(x*y));break;
  159.                                         case 3: tf1.setText(""+(x/y));break;} } else if(e2.getSource()==b24)
  160.                                             //单击"."按钮输入小数

  161.                                             {if(tf1.getText().trim().indexOf(".")!=-1)
  162.                                                 //判断字符串中是否已经包含了小数点

  163.                                                 {} else//如果没数点有小

  164.                                                     {if(tf1.getText().trim().equals("0"))
  165.                                                         //如果初时显示为0

  166.                                                         { str.setLength(0);
  167.                                                         tf1.setText((str.append("0"+e2.getActionCommand())).toString());}
  168.                                                     elseif(tf1.getText().trim().equals(""))
  169.                                                         //如果初时显示为空则不做任何操作

  170.                                                         {} else { tf1.setText(str.append(e2.getActionCommand()).toString());}
  171.                                                     } y=0d;} else if(e2.getSource()==b11)
  172.                                                         //求平方根

  173.                                                         { x=Double.parseDouble(tf1.getText().trim());
  174.                                                         tf1.setText("数字格式异常");
  175.                                                         if(x<0) tf1.setText("负数没有平方根");
  176.                                                         else tf1.setText(""+Math.sqrt(x)); str.setLength(0); y=0d;}
  177.                                                     elseif(e2.getSource()==b16)//单击了"%"按钮

  178.                                                         { x=Double.parseDouble(tf1.getText().trim());
  179.                                                         tf1.setText(""+(0.01*x)); str.setLength(0); y=0d;
  180.                                                         }else if(e2.getSource()==b21)//单击了"1/X"按钮

  181.                                                             { x=Double.parseDouble(tf1.getText().trim());
  182.                                                             if(x==0){ tf1.setText("除数不能为零");} else
  183.                                                             { tf1.setText(""+(1/x));} str.setLength(0); y=0d;
  184.                                                             }else if(e2.getSource()==b3)//MC为清除内存

  185.                                                                 { m=0d; tf2.setText(""); str.setLength(0);
  186.                                                                 }else if(e2.getSource()==b4)//MR为重新调用存储的数据

  187.                                                                     {if(tf2.getText().trim()!="")//有记忆数字

  188.                                                                         { tf1.setText(""+m);} } else if(e2.getSource()==b5)
  189.                                                                             //MS为存储显示的数据

  190.                                                                             { m=Double.parseDouble(tf1.getText().trim());
  191.                                                                             tf2.setText("M"); tf1.setText("0"); str.setLength(0);}
  192.                                                                         elseif(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

  193.                                                                             { m=m+Double.parseDouble(tf1.getText().trim());} else//选择的是其他的按钮

  194.                                                                                 {if(e2.getSource()==b22)//如果选择的是"0"这个数字键

  195.                                                                                     {if(tf1.getText().trim().equals("0"))
  196.                                                                                         //如果显示屏显示的为零不做操作

  197.                                                                                         {} else { tf1.setText(str.append(e2.getActionCommand()).toString());
  198.                                                                                         y=Double.parseDouble(tf1.getText().trim());} } else if(e2.getSource()==b0)
  199.                                                                                             //选择的是“BackSpace”按钮

  200.                                                                                             {if(!tf1.getText().trim().equals("0"))
  201.                                                                                             //如果显示屏显示的不是零

  202.                                                                                                 {if(str.length()!=1){
  203.                                                                                                     tf1.setText(str.delete(str.length()-1,str.length()).toString());
  204.                                                                                                     //可能抛出字符串越界异常

  205.                                                                                                     }else { tf1.setText("0"); str.setLength(0);} }
  206.                                                                                             y=Double.parseDouble(tf1.getText().trim());} else
  207.                                                                                                 //其他的数字键

  208.                                                                                                 { tf1.setText(str.append(e2.getActionCommand()).toString());
  209.                                                                                                 y=Double.parseDouble(tf1.getText().trim());} } } catch(NumberFormatException e){ tf1.setText("数字格式异常");} catch(StringIndexOutOfBound***ception e)
  210.                                                                             { tf1.setText("字符串索引越界");} } } public staticvoid main(String args[]){ new cc();} }
原创粉丝点击