计算器小程序-Java原创
2009-11-20 18:56
260 查看
学习Java有一段时间了,为了练练手,写了个简单的计算器程序,代码如下:
运行结果如下:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CalculatorJFrame extends JFrame implements ActionListener { private JButton btn_sqrt,btn_sign,btn_ce,btn_c, btn_7,btn_8,btn_9,btn_div, btn_4,btn_5,btn_6,btn_mul, btn_1,btn_2,btn_3,btn_sub, btn_0,btn_dot,btn_equal,btn_plus; private JTextField text; //显示结果的文本框。 private Panel pn; //放置按钮的面板。 private double r; //r保存计算结果。 private int flag=1; //flag==1表示正在输入第一个数,flag==2表示正在输入第二个数。 private String s,s1,s2; //s保存操作符,s1和s2保存两个操作数。 //初始化窗口: public CalculatorJFrame() { super("计算器"); this.setSize(251,220); this.setLocation(300,150); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setResizable(false); this.setLayout(new BorderLayout(5,5)); text=new JTextField("0."); text.setHorizontalAlignment(JTextField.RIGHT); text.setEditable(false); text.setBackground(Color.white); this.add(text,"North"); pn=new Panel(new GridLayout(5,4,2,2)); this.add(pn); //添加按钮: btn_sqrt=addButton("sqrt"); btn_sign=addButton("-/+"); btn_ce=addButton("CE"); btn_c=addButton("C"); btn_7=addButton("7"); btn_8=addButton("8"); btn_9=addButton("9"); btn_div=addButton("/"); btn_4=addButton("4"); btn_5=addButton("5"); btn_6=addButton("6"); btn_mul=addButton("x"); btn_1=addButton("1"); btn_2=addButton("2"); btn_3=addButton("3"); btn_sub=addButton("-"); btn_0=addButton("0"); btn_dot=addButton("."); btn_equal=addButton("="); btn_plus=addButton("+"); this.setVisible(true); s1=new String(""); s2=new String(""); s=new String(""); } //添加按钮的函数: private JButton addButton(String label) { JButton button=new JButton(label); pn.add(button); button.addActionListener(this); return button; } //单击按钮响应: public void actionPerformed(ActionEvent e) { JButton b=(JButton)e.getSource(); boolean digit=(b==btn_dot||b==btn_0||b==btn_1||b==btn_2||b==btn_3||b==btn_4 //事件源为数字或小数点按钮,则digit==true。 ||b==btn_5||b==btn_6||b==btn_7||b==btn_8||b==btn_9); boolean sign=(b==btn_mul||b==btn_div||b==btn_sub||b==btn_plus||b==btn_equal); //事件源为为加、减、乘、除、等号按钮,则sign=true。 //事件源为数字或小数点按钮: if(digit) { if(s.equals("="))//如果之前输入的是等号,则清空所有操作数重新开始计算。 { flag=1; s1=s2=""; s=""; } if(flag==1)//输入第一个操作数,存入字符串s1。 { s1=s1+b.getText(); text.setText(s1); } if(flag==2)//输入第二个操作数,存入字符串s2。 { s2=s2+b.getText(); text.setText(s2); } } //事件源为加、减、乘、除、等号按钮: if(sign) { if(s2.equals("")&&!s1.equals(""))//完成第一个操作数的输入时,flag变为2。 { flag=2; } if(!s2.equals(""))//完成第二个操作数的输入时,计算结果。 { try { this.result();//计算结果并存入变量r。 text.setText(""+r);//显示结果。 s1=""+r;//将结果作为第一个操作数继续进行下一步运算。 s2="";//清空第二个操作数。 } catch(NumberFormatException nfe) { text.setText(nfe.getMessage()+",请重新输入!"); flag=1; s1="";s2="";s=""; } } s=b.getText();//得到操作符,存入变量s } if(b==btn_ce)//按下CE按钮清空当前输入的操作数。 { if(!s2.equals(""))//如果已经输入两个操作数,则清空第二个,并在文本框text中显示第一个操作数作为当前操作数。 { text.setText(s1); s2=""; } else //如果只输入了一个操作数,则清空第一个。 { text.setText("0."); s1=""; } } if(b==btn_c)//按下C按钮清空所有操作数。 { flag=1; text.setText("0."); s1=""; s2=""; s=""; } if(b==btn_sqrt&&!text.getText().equals("0.")) { try { double d=Math.sqrt(Double.parseDouble(text.getText())); if(!s2.equals(""))s2=""+d; else s1=""+d; text.setText(""+d); } catch(NumberFormatException nfe) { text.setText(nfe.getMessage()+"请重新输入!"); s1=s2=s=""; flag=1; } } if(b==btn_sign)//按下“-/+按钮”。 { if(!s2.equals(""))//已经输入了两个操作数,则对第二个进行符号改变。 { if(s2.charAt(0)=='-')//如果为负数,单击“-/+”按钮后则变为正数。 s2=s2.substring(1); else //如果为正数,单击“-/+”按钮后则变为负数。 s2="-"+s2; text.setText(s2); } if(s2.equals("")&&!s1.equals(""))//对第一个数进行符号改变。 { if(s1.charAt(0)=='-') s1=s1.substring(1); else s1="-"+s1; text.setText(s1); } } }//actionPerformed end. //计算结果的函数: public void result()throws NumberFormatException { double d1=Double.parseDouble(s1); double d2=Double.parseDouble(s2); char c=s.charAt(0); //得到操作符。 switch(c) { case 'x' : r=d1*d2;break; case '/' : r=d1/d2;break; case '+' : r=d1+d2;break; case '-' : r=d1-d2;break; } } //主函数: public static void main(String args[]) { new CalculatorJFrame(); } }
运行结果如下:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/join09/EntryImages/20091120/计算器.jpg)
相关文章推荐
- [原创]java web三层架构程序实例
- 【原创】记一个Java GUI程序(原目标OS是Windows)“移植”到Linux的过程
- JAVA实现计算器控制台程序
- 【练习题】构造方法 编写Java程序,模拟简单的计算器。
- 200行Java代码编写一个计算器程序
- 简单的计算器程序(摘自java核心技术.卷I)
- 不带有界面的简单的计算器小程序(Java语言实现)
- Java sdut acm 1133 CC++经典程序训练3---模拟计算器
- Java小程序-计算器
- RSA算法简单实现加密、解密、签名、验证(原创Java程序)
- 百度之星编程题目:C++和Java程序变量名转换器- 程序代码(原创)
- java 图形用户界面之 计算器的示例程序
- java 计算器小程序
- 原创:微信小程序java实现AES解密并获取unionId
- 第一个Java程序——计算器
- 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。 编写构造方法,用于初始化n1和n2,再为该类定义 加(addition)、 减(su
- java运用面向对象的思想实现计算器的小程序
- Java中基于Scanner 编写的计算器小程序
- java 简单的计算器程序实例代码
- 【分享】【计算器程序--java编写】