计算器

  1 import java.awt.*;
  2 import java.awt.event.*;
  3 public class calculator//一个类。
  4 {
  5 public static void main(String args[])//主函数。
  6 {
  7 MyWindow my=new MyWindow("计算器"); //设置框架标题
  8 }
  9 }
 10 class MyWindow extends Frame implements ActionListener
 11 {    StringBuffer m=new StringBuffer();//创建一个实例。
 12      int p;
 13  TextField tex;//定义一个文本行。
 14  Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,jia,jian,cheng,chu,deng,dian,qingling,sin,cos,tan;//定义按钮。
 15 MyWindow(String s)//类的构造方法。
 16 {super(s);
 17 StringBuffer s2=new StringBuffer();
 18 String s;
 19 tex=new  TextField(18);
 20    b0=new Button("    0   ");
 21    b1=new Button("    1   ");
 22    b2=new Button("    2   ");
 23    b3=new Button("   3    ");
 24    b4=new Button("    4   ");
 25    b5=new Button("    5   ");
 26    b6=new Button("    6   ");
 27    b7=new Button("    7   ");
 28    b8=new Button("    8   ");
 29    b9=new Button("     9   ");
 30     dian=new Button("     .   ");
 31      jia=new Button("     +   ");
 32     jian=new Button("     -    ");
 33    cheng=new Button("     ×   ");
 34      chu=new Button("    /    ");
 35     deng=new Button("    =   ");
 36    qingling=new Button("  清零 ");
 37     sin=new Button("sin");
 38     cos=new Button("cos");
 39     tan=new Button("tan");//创建实例,并对实例成员变量进行初始化。setLayout(new FlowLayout());//设置为流布局管理。
 40  add(tex);
 41  add(b0);
 42  add(b1);
 43  add(b2);
 44  add(b3);
 45  add(b4);
 46  add(b5);
 47  add(b6);
 48  add(b7);
 49  add(b8);
 50  add(b9);
 51  add(dian);
 52  add(jia);
 53 add(jian);
 54 add(cheng);
 55 add(chu);
 56  add(qingling);
 57  add(deng);
 58  add(cos);
 59  add(sin);
 60  add(tan);//添加每个按钮和文本行放在窗口上。
 61  b0.addActionListener(this);
 62  b1.addActionListener(this);
 63  b2.addActionListener(this);
 64  b3.addActionListener(this);
 65  b4.addActionListener(this);
 66  b5.addActionListener(this);
 67  b6.addActionListener(this);
 68  b7.addActionListener(this);
 69  b8.addActionListener(this);
 70  b9.addActionListener(this);
 71  jia.addActionListener(this);
 72  jian.addActionListener(this);
 73  cheng.addActionListener(this);
 74  chu.addActionListener(this);
 75  dian.addActionListener(this);
 76  deng.addActionListener(this);
 77  qingling.addActionListener(this);
 78   sin.addActionListener(this);
 79  cos.addActionListener(this);
 80  tan.addActionListener(this);//为按钮注册窗口事件监听器,委托Winclose对象处理事件。
 81 setBounds(200,200,160,280);//设置窗口大小。
 82  setResizable(false);//不可改变大小
 83  setVisible(true);//窗口可视化。
 84  validate();//布局美观。
 85 addWindowListener(new WindowAdapter()//实现窗口事件监听器接口。
 86  {   public void windowClosing(WindowEvent ee)//窗口关闭事件处理方法。
 87    { System.exit(0);}}}
 88 public void actionPerformed(ActionEvent e)//单机事件处理方法,实现//ActionListener接口。
 89 {
 90  if(e.getSource()==b0)//获得当前事件源组件,比较引用
 91  { 
 92    m=m.append("0");//字符串转换为整数。
 93  tex.setText(String.valueOf(m)); //将m转换成字符串。
 94  }if(e.getSource()==b1)
 95  { m=m.append("1"); tex.setText(String.valueOf(m)); 
 96  }
 97  if(e.getSource()==b2){ 
 98 m=m.append("2"); tex.setText(String.valueOf(m)); 
 99  }
100  if(e.getSource()==b3)
101  { 
102    m=m.append("3"); tex.setText(String.valueOf(m)); 
103  }
104  if(e.getSource()==b4)
105  { 
106    m=m.append("4"); tex.setText(String.valueOf(m)); 
107  }
108  if(e.getSource()==b5)
109  { 
110    m=m.append("5"); tex.setText(String.valueOf(m)); 
111  }
112  if(e.getSource()==b6)
113  { 
114    m=m.append("6"); tex.setText(String.valueOf(m)); 
115  }
116  if(e.getSource()==b7)
117  { 
118    m=m.append("7"); tex.setText(String.valueOf(m)); 
119  }
120  if(e.getSource()==b8)
121  { 
122    m=m.append("8"); tex.setText(String.valueOf(m)); 
123  }if(e.getSource()==b9)
124  {m=m.append("9"); tex.setText(String.valueOf(m)); 
125  }
126  if(e.getSource()==jia)
127  { m=m.append("+"); tex.setText(String.valueOf(m)); 
128  }if(e.getSource()==jian)
129  {m=m.append("-"); tex.setText(String.valueOf(m)); 
130  }
131  if(e.getSource()==cheng)
132  { m=m.append("*"); tex.setText(String.valueOf(m)); 
133  }
134  if(e.getSource()==chu)
135  { m=m.append("/"); tex.setText(String.valueOf(m)); 
136  }
137 if(e.getSource()==dian)
138  { m=m.append("."); tex.setText(String.valueOf(m)); 
139  }
140  String mm=String.valueOf(m);
141  int p1=mm.indexOf("+");//字符串的IndexOf()方法搜索在该字符串上是否出现了作为//参数传递的字符串,
142 int p2=mm.indexOf("-");//如果找到字符串,则返回字符的起始位置 (0表示第
143  int p3=mm.indexOf("*");//一个字符,1表示第二个字符依此类推)如果说没有找到则返//回 -1.
144 int p4=mm.indexOf("/");
145  if(p1!=-1){
146  p=p1;
147  }
148 else if(p3!=-1)
149  {p=p3;
150  } else if(p2!=-1)
151  {
152   p=p2;
153  }
154  else if(p4!=-1)
155  {p=p4;
156  }
157 if(e.getSource()==deng)
158  { String m1=mm.substring(0,p);
159    String m2=mm.substring(p+1);
160    String ch=mm.substring(p,p+1);
161     if(ch.equals("+"))
162    {
163    float n1=Float.parseFloat(m1); //字符串转换为整数。
164    float n2=Float.parseFloat(m2); 
165    float sum=n1+n2;
166    String su=String.valueOf(sum);//数字转换为字符串。
167    tex.setText(su);
168    }
169 if(ch.equals("-"))//按钮为“-”。
170    { float n1=Float.parseFloat(m1); 
171    float n2=Float.parseFloat(m2); 
172    float sum=n1-n2;
173    String su=String.valueOf(sum);
174    tex.setText(su);
175    }
176 if(ch.equals("*"))
177    {
178    float n1=Float.parseFloat(m1); 
179    float n2=Float.parseFloat(m2); 
180    float sum=n1*n2;
181    String su=String.valueOf(sum);
182    tex.setText(su);
183    }if(ch.equals("/"))
184    {
185    float n1=Float.parseFloat(m1); 
186    float n2=Float.parseFloat(m2); 
187    float sum=n1/n2;
188    String su=String.valueOf(sum);
189    tex.setText(su);
190    }}
191 if(e.getSource()==qingling)
192  {StringBuffer kk=new StringBuffer();
193    m=kk;
194   tex.setText("0"); 
195  }
196  if(e.getSource()==sin)
197  {
198   String t=tex.getText();
199   double num=Float.parseFloat(t);
200   num=num*(Math.PI/180);
201   double nub=Math.sin(num);
202   tex.setText(String.valueOf(nub));
203    }
204  if(e.getSource()==cos)
205  {
206   String t=tex.getText();
207   double num=Float.parseFloat(t);
208   num=num*(Math.PI/180);//弧度转换为角度。
209   double nub=Math.cos(num);
210   tex.setText(String.valueOf(nub));
211   }
212  if(e.getSource()==tan)
213  {
214   String t=tex.getText();
215   double num=Float.parseFloat(t);
216   num=num*(Math.PI/180);
217   double nub=Math.tan(num);
218   tex.setText(String.valueOf(nub))
219   }
220   }
221 }
222                               
原文地址:https://www.cnblogs.com/cancangood/p/3278893.html