import java.awt.*; import java.awt.event.*; public class Caculator{ public static void main(String[] args){ new CFrame("Made By OuZhiLi"); } }class CFrame extends Frame{ Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bdiv,bmul,bsub,badd,bpot,bequals,bcancel; TextField tf; //当点击按钮+、-、*、/时,com = true boolean com = false; //当i=0时说明是我们第一次输入,字符串text不会累加 int i = 0; //存放text的内容 String text = ""; //存放点击按钮+、-、*、/之前的数值 double defbutton = 0; //+、-、*、/的代号分别为1,2,3,4 int symbol = 0;
//a用来标记0 int a;
public CFrame (String s){ super(s); setLayout(new BorderLayout()); setLocation(350,250); setSize(250,300);
import java.awt.event.*;
public class Caculator{
public static void main(String[] args){
new CFrame("Made By OuZhiLi");
}
}class CFrame extends Frame{
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bdiv,bmul,bsub,badd,bpot,bequals,bcancel;
TextField tf;
//当点击按钮+、-、*、/时,com = true
boolean com = false; //当i=0时说明是我们第一次输入,字符串text不会累加
int i = 0; //存放text的内容
String text = ""; //存放点击按钮+、-、*、/之前的数值
double defbutton = 0; //+、-、*、/的代号分别为1,2,3,4
int symbol = 0;
//a用来标记0
int a;
public CFrame (String s){
super(s);
setLayout(new BorderLayout());
setLocation(350,250);
setSize(250,300);
tf= new TextField("0",300);
b0=new Button("0");
b1=new Button("1");
b2=new Button("2");
b3=new Button("3");
b4=new Button("4");
b5=new Button("5");
b6=new Button("6");
b7=new Button("7");
b8=new Button("8");
b9=new Button("9");
bdiv=new Button("/");
bmul=new Button("*");
bsub=new Button("-");
badd=new Button("+");
bpot=new Button(".");
bequals=new Button("=");
bcancel=new Button("清零");
b0.addActionListener(new MyMonitor());
b1.addActionListener(new MyMonitor());
b2.addActionListener(new MyMonitor());
b3.addActionListener(new MyMonitor());
b4.addActionListener(new MyMonitor());
b5.addActionListener(new MyMonitor());
b6.addActionListener(new MyMonitor());
b7.addActionListener(new MyMonitor());
b8.addActionListener(new MyMonitor());
b9.addActionListener(new MyMonitor());
bdiv.addActionListener(new MyMonitor());
bmul.addActionListener(new MyMonitor());
bsub.addActionListener(new MyMonitor());
badd.addActionListener(new MyMonitor());
bequals.addActionListener(new MyMonitor());
bpot.addActionListener(new MyMonitor());
bcancel.addActionListener(new MyMonitor());
Panel p1 = new Panel(new BorderLayout());
Panel p2=new Panel(new GridLayout(4,4));
Panel p3=new Panel(new BorderLayout());
p1.add(tf);
p2.add(b7); p2.add(b8);p2.add(b9);p2.add(bdiv);
p2.add(b4); p2.add(b5);p2.add(b6);p2.add(bmul);
p2.add(b1); p2.add(b2);p2.add(b3);p2.add(bsub);
p2.add(b0); p2.add(bpot);p2.add(bequals);p2.add(badd);
p3.add(bcancel);
add(p1,"North");add(p2,"Center");add(p3,"South");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
/*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true
* 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;
**/
if (e.getSource() == b1) {
if (com || i == 0) {
tf.setText("1");
com = false;
i = 1;
} else {
text = tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("1");
}
else{
tf.setText(text + "1");
}
}
}
else if (e.getSource() == b2) {
if (com || i == 0) {
tf.setText("2");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("2");
}
else{
tf.setText(text + "2");
}
}
}
else if (e.getSource() == b3) {
if (com || i == 0) {
tf.setText("3");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("3");
}
else{
tf.setText(text + "3");
}
}
}
else if (e.getSource() == b4) {
if (com || i == 0) {
tf.setText("4");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("4");
}
else{
tf.setText(text + "4");
}
}
}
else if (e.getSource() == b5) {
if (com || i == 0) {
tf.setText("5");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("5");
}
else{
tf.setText(text + "5");
}
}
}
else if (e.getSource() == b6) {
if (com || i == 0) {
tf.setText("6");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("6");
}
else{
tf.setText(text + "6");
}
}
}
else if (e.getSource() == b7) {
if (com || i == 0) {
tf.setText("7");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("7");
}
else{
tf.setText(text + "7");
}
}
}
else if (e.getSource() == b8) {
if (com || i == 0) {
tf.setText("8");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("8");
}
else{
tf.setText(text + "8");
}
}
}
else if (e.getSource() == b9) {
if (com || i == 0) {
tf.setText("9");
com = false;
i = 1;
} else {
text =tf.getText();
if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
tf.setText("9");
}
else{
tf.setText(text + "9");
}
}
} /*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是
* 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添
* 加0;否则保持原来的数值不变
*/
else if (e.getSource() == b0) { //result.text.getText()是得到text里内容的意思
if (com || i == 0) {
tf.setText("0");
com = false;
i = 1;
} else {
text = tf.getText();
if (Double.parseDouble(text) > 0 || Double.parseDouble(text) < 0) { //Double.parseFloat(text)就是类型转换了,下面都是一样
tf.setText(text + "0");
} else {
if (text.trim().indexOf(".") == -1) {
tf.setText(text);
} else {
tf.setText(text + "0");
}
}
}
}
else if(e.getSource()==bcancel){
tf.setText("0");
}
/*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加,
* 不存在就添加.
*/
else if (e.getSource() == bpot) {
if (com || i == 0) {
tf.setText("0.");
com = false;
i = 1;
} else {
text = tf.getText();
if (text.trim().indexOf(".") == -1) {
tf.setText(text + ".");
} else {
tf.setText(text);
}
}
}
//获得点击+之前的数值
else if (e.getSource() == badd) {
com = true;
i = 0;
defbutton = Double.parseDouble(tf.getText());
symbol = 1;
} //获得点击-之前的数值
else if (e.getSource() == bsub) {
com = true;
i = 0;
defbutton = Double.parseDouble(tf.getText());
symbol = 2;
} //获得点击*之前的数值
else if (e.getSource() == bmul) {
com = true;
i = 0;
defbutton = Double.parseDouble(tf.getText());
symbol = 3;
} //获得点击/之前的数值
else if (e.getSource() == bdiv) {
com = true;
i = 0;
defbutton = Double.parseDouble(tf.getText());
symbol = 4;
}
else if (e.getSource() == bequals) {
switch (symbol) {
case 1 : //计算加法
{
double result =
defbutton + Double.parseDouble(tf.getText());
tf.setText(result + "");
i = 0;
text = "";
break;
}
case 2 ://计算减法
{
double result =
defbutton - Double.parseDouble(tf.getText());
tf.setText(String.valueOf(result ));
i = 0;
text = "";
break;
}
case 3 ://计算乘法
{
double result =
defbutton * Double.parseDouble(tf.getText()); tf.setText(result + "");
i = 0;
text = "";
break;
}
case 4 ://计算除法
{
double result =
defbutton / Double.parseDouble(tf.getText());
tf.setText(result + "");
i = 0;
text = "";
break;
}
}
}
//over
}
}
}