Java AWT实现的计算器代码
2013-10-10 17:28
393 查看
import java.awt.*;
import java.awt.event.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.Integer;
import java.lang.Math;
public class Calculator
{
private Frame f=new Frame("计算器");
private Panel p1=new Panel();
private Panel p2=new Panel();
private Panel p3=new Panel();
private TextField ta=new TextField(30);
String[] name={"CE","±","√","/","%","7","8","9","*","1/x","4","5","6","-","+","1","2","3","0","."};
Button[] buttons=new Button[name.length];
Button bt=new Button("=");
//num1存放第一个运算数;num2存放第二个运算数,并用于每次从TextField ta里取出新输入的数
//operator用于存放输入的运算符
double num1=0.0;
double num2=0.0;
String operator="=";
public void init()
{
//向p1中加入TextField
p1.add(ta);
f.add(p1,BorderLayout.NORTH);
p2.setLayout(new GridLayout(4,5,4,4));
//向p2中依次添加20个按钮
for(int i=0;i<name.length;i++)
{
buttons[i]=new Button(name[i]);
p2.add(buttons[i]);
}
ActionListener btListener=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("command is:"+e.getActionCommand());
//定义正则表达式m1,用于匹配数字或者浮点数
Matcher m1=Pattern.compile("\\d|\\.").matcher(e.getActionCommand());
//当按 的按钮是“CE”时
if(e.getActionCommand().equals("CE"))
{
ta.setText("");
}
/*当按的按钮是数字或带小数点的浮点数时,把按的数字显示在TextField ta中,把ta上显示的数字字符串转换成double数字赋给num2*/
else if(m1.matches())
{
ta.setText(ta.getText()+e.getActionCommand());
num2=Double.parseDouble(ta.getText());
}
/*当按的按钮是运算符时,num1记录第一个运算数,num2记录第二个运算数。operator用于存放新按的运算符,operator中原始存放的运算符为“=”,所以每次将新运算符放人operator之前,要不operator中已存放的运算符弹出,让num1和num2做刚弹出的运算符的运算,运算结果存入num1。弹出operator中已有运算符后,将新运算符放人operator中*/
else
{
/*"√"、"±"、"1/x"这三个单目运算符都是放在数字后面使用,改变都是输入的数字的值,即num2的值*/
if((ta.getText()+e.getActionCommand()).endsWith("√"))
{
num2=Double.parseDouble(ta.getText());
num2=Math.sqrt(num2);
if (operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if((ta.getText()+e.getActionCommand()).endsWith("±"))
{
num2=Double.parseDouble(ta.getText());
num2=-num2;
if(operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if((ta.getText()+e.getActionCommand()).endsWith("1/x"))
{
num2=Double.parseDouble(ta.getText());
num2=1/num2;
if(operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if (operator.equals("="))
{
num1=Double.parseDouble(ta.getText());
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
operator=e.getActionCommand();
ta.setText("");
}
if(e.getActionCommand().equals("="))
{
ta.setText(""+num1);
}
}
};
for(int i=0;i<buttons.length;i++)
{
buttons[i].addActionListener(btListener);
}
bt.addActionListener(btListener);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//将“=”按钮单独放在p3里,放在最后一行
p3.add(bt);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
/** handleoperator()方法处理 operator中存放有“+”,“-”,“*”,"/","%","√" 运算符的时候**/
public void handleoperator(String operator)
{
if(operator.equals("+"))
{
num1+=num2;
}
else if(operator.equals("-"))
{
num1-=num2;
}
else if(operator.equals("*"))
{
num1*=num2;
}
else if(operator.equals("/"))
{
if(num2==0.0)
{
System.out.println("除数不能为零!");
}
else
{
num1/=num2;
}
}
else if(operator.equals("%"))
{
if(num2==0.0)
{
System.out.println("除数不能为零!");
}
else
{
num1%=num2;
}
}
else if(operator.equals("√"))
{
}
}
public static void main(String[] args)
{
new Calculator().init();
}
}
import java.awt.event.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.Integer;
import java.lang.Math;
public class Calculator
{
private Frame f=new Frame("计算器");
private Panel p1=new Panel();
private Panel p2=new Panel();
private Panel p3=new Panel();
private TextField ta=new TextField(30);
String[] name={"CE","±","√","/","%","7","8","9","*","1/x","4","5","6","-","+","1","2","3","0","."};
Button[] buttons=new Button[name.length];
Button bt=new Button("=");
//num1存放第一个运算数;num2存放第二个运算数,并用于每次从TextField ta里取出新输入的数
//operator用于存放输入的运算符
double num1=0.0;
double num2=0.0;
String operator="=";
public void init()
{
//向p1中加入TextField
p1.add(ta);
f.add(p1,BorderLayout.NORTH);
p2.setLayout(new GridLayout(4,5,4,4));
//向p2中依次添加20个按钮
for(int i=0;i<name.length;i++)
{
buttons[i]=new Button(name[i]);
p2.add(buttons[i]);
}
ActionListener btListener=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("command is:"+e.getActionCommand());
//定义正则表达式m1,用于匹配数字或者浮点数
Matcher m1=Pattern.compile("\\d|\\.").matcher(e.getActionCommand());
//当按 的按钮是“CE”时
if(e.getActionCommand().equals("CE"))
{
ta.setText("");
}
/*当按的按钮是数字或带小数点的浮点数时,把按的数字显示在TextField ta中,把ta上显示的数字字符串转换成double数字赋给num2*/
else if(m1.matches())
{
ta.setText(ta.getText()+e.getActionCommand());
num2=Double.parseDouble(ta.getText());
}
/*当按的按钮是运算符时,num1记录第一个运算数,num2记录第二个运算数。operator用于存放新按的运算符,operator中原始存放的运算符为“=”,所以每次将新运算符放人operator之前,要不operator中已存放的运算符弹出,让num1和num2做刚弹出的运算符的运算,运算结果存入num1。弹出operator中已有运算符后,将新运算符放人operator中*/
else
{
/*"√"、"±"、"1/x"这三个单目运算符都是放在数字后面使用,改变都是输入的数字的值,即num2的值*/
if((ta.getText()+e.getActionCommand()).endsWith("√"))
{
num2=Double.parseDouble(ta.getText());
num2=Math.sqrt(num2);
if (operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if((ta.getText()+e.getActionCommand()).endsWith("±"))
{
num2=Double.parseDouble(ta.getText());
num2=-num2;
if(operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if((ta.getText()+e.getActionCommand()).endsWith("1/x"))
{
num2=Double.parseDouble(ta.getText());
num2=1/num2;
if(operator.equals("="))
{
num1=num2;
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
}
else if (operator.equals("="))
{
num1=Double.parseDouble(ta.getText());
}
else if(!operator.equals("="))
{
handleoperator(operator);
}
operator=e.getActionCommand();
ta.setText("");
}
if(e.getActionCommand().equals("="))
{
ta.setText(""+num1);
}
}
};
for(int i=0;i<buttons.length;i++)
{
buttons[i].addActionListener(btListener);
}
bt.addActionListener(btListener);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//将“=”按钮单独放在p3里,放在最后一行
p3.add(bt);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
/** handleoperator()方法处理 operator中存放有“+”,“-”,“*”,"/","%","√" 运算符的时候**/
public void handleoperator(String operator)
{
if(operator.equals("+"))
{
num1+=num2;
}
else if(operator.equals("-"))
{
num1-=num2;
}
else if(operator.equals("*"))
{
num1*=num2;
}
else if(operator.equals("/"))
{
if(num2==0.0)
{
System.out.println("除数不能为零!");
}
else
{
num1/=num2;
}
}
else if(operator.equals("%"))
{
if(num2==0.0)
{
System.out.println("除数不能为零!");
}
else
{
num1%=num2;
}
}
else if(operator.equals("√"))
{
}
}
public static void main(String[] args)
{
new Calculator().init();
}
}
相关文章推荐
- java代码实例 使用switch实现简易的计算器(实现加减乘除)
- java代码实例 使用switch实现简易的计算器(实现加减乘除)
- 一个一百亿的计算器的实现(java代码实现)
- java代码实例 使用switch实现简易的计算器(实现加减乘除)
- Java对象简单实用案例之计算器实现代码
- 每日20行之4~~~两种方法java实现简易计算器 附带复杂计算器代码(优先级顺序)
- Java 朴素版计算器实现(代码冗长)
- java实现计算器的代码
- 计算器的实现-Java 代码
- Java实现计算器的代码
- 计算器核心算法代码实现(Java)
- java代码---------计算器实现
- Java实现Andriod带看括弧的计算器代码
- Java调用JavaScript实现字符串计算器代码示例
- 不用java代码在页面实现下拉列表
- Java实现-一行代码求两个数的最大公约数
- JAVA 实现多文件同时操作 程序代码
- Android图片加载神器之Fresco-圆形圆角二合一[Java代码实现圆形圆角效果]
- JAVA 实现内存管理 和 LOG 保存的 代码
- java设置一段代码执行的超时时间的简单方法 间接实现获取Connection超时问题