📄 winner.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class Computer extends Frame implements ActionListener{
double x1=0,x2=0,total=0,i=0,j=0,a=1,b=0,c=0;
//Label la1=new Label("");
String str=new String();
Button bt0=new Button("0");
Button bt1=new Button("1");
Button bt2=new Button("2");
Button bt3=new Button("3");
Button bt4=new Button("4");
Button bt5=new Button("5");
Button bt6=new Button("6");
Button bt7=new Button("7");
Button bt8=new Button("8");
Button bt9=new Button("9");
Button bt10=new Button("CE");
Button point=new Button(".");
TextField tf=new TextField("0");
Button jia=new Button("+");
Button jian=new Button("-");
Button cheng=new Button("*");
Button chu=new Button("/");
Button deng=new Button("=");
Button sqrt=new Button("sqrt");
Button reset=new Button("C");
Button fu=new Button("+/-");
static Frame f=new Frame();/*创建按钮0-9,小数点,加减乘除,清0按扭,文本框,*/
MenuBar mb=new MenuBar();//生成菜单组件对象
Menu m1=new Menu("编辑");
MenuItem copy=new MenuItem("复制");
MenuItem cut=new MenuItem("剪切");
MenuItem paste=new MenuItem("粘贴");
Menu m2=new Menu("帮助");
MenuItem about=new MenuItem("关于");
MenuItem exit=new MenuItem("退出");
Computer(){
super("计算机器");
setLayout(new FlowLayout());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setLayout(null);
setSize(250,250);
add(tf);tf.setEditable(true);tf.setBounds(10,50,215,25);
add(bt0);bt0.setBounds(10,185,35,28);
add(bt1);bt1.setBounds(10,150,35,28);
add(bt2);bt2.setBounds(55,150,35,28);
add(bt3);bt3.setBounds(100,150,35,28);
add(bt4);bt4.setBounds(10,115,35,28);
add(bt5);bt5.setBounds(55,115,35,28);
add(bt6);bt6.setBounds(100,115,35,28);
add(bt7);bt7.setBounds(10,80,35,28);
add(bt8);bt8.setBounds(55,80,35,28);
add(bt9);bt9.setBounds(100,80,35,28);
add(bt10);bt10.setBounds(190,150,35,28);
add(point);point.setBounds(100,185,35,28);
add(deng);deng.setBounds(190,185,35,28);
add(sqrt);sqrt.setBounds(190,80,35,28);
add(fu);fu.setBounds(55,185,35,28);
add(jia);jia.setBounds(145,185,35,28);
add(jian);jian.setBounds(145,150,35,28);
add(cheng);cheng.setBounds(145,115,35,28);
add(chu);chu.setBounds(145,80,35,28);
//add(la1);la1.setBounds(10,200,250,20);/*手工布局*/
add(reset);reset.setBounds(190,115,35,28); /*添加组件*/
m1.add(copy);
m1.add(cut);
m1.add(paste);
mb.add(m1);
m2.add(about);
m2.add(exit);
exit.addActionListener(this);
mb.add(m2);
setMenuBar(mb);
bt0.addActionListener(this);
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);
bt5.addActionListener(this);
bt6.addActionListener(this);
bt7.addActionListener(this);
bt8.addActionListener(this);
bt9.addActionListener(this);
point.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
deng.addActionListener(this);
sqrt.addActionListener(this);
reset.addActionListener(this);
fu.addActionListener(this); /*添加监听*/
show();
}
public static void main(String args[]){
new Computer();
}
public void jisuan() //在这里进行运算处理
{x2=Float.parseFloat(tf.getText());
if(str=="+"&&a==1) {total=x2+total;a=0;}
if(str=="-"&&a==1) { total=total-x2;a=0;}
if(str=="*"&&a==1) {total=x2*total;a=0;}
if(str=="/"&&a==1)
{if(x2==0)
{ tf.setText(" 除数不能为0");
JOptionPane.showMessageDialog(f,"除数不能为0");
}
else
total=total/x2;
a=0;} //a为0说明已经按过运算符
//tf.setText(Double.toString(total));j=2;
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt0)
{ a=1;
if(tf.getText().indexOf('0')==0) //为避免输入00000之类的数
tf.setText("0");
else
{ if(j==1)
tf.setText(tf.getText()+"0");
else
{ tf.setText("");
tf.setText(tf.getText()+"0");j=1;}
}
}
if(e.getSource()==bt1)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"1");
else
{ tf.setText("");
tf.setText(tf.getText()+"1");j=1;}
}
if(e.getSource()==bt2)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"2");
else
{ tf.setText("");
tf.setText(tf.getText()+"2");j=1;}
}
if(e.getSource()==bt3)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"3");
else
{ tf.setText("");
tf.setText(tf.getText()+"3");j=1;}
}
if(e.getSource()==bt4)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"4");
else
{ tf.setText("");
tf.setText(tf.getText()+"4");j=1;}
}
if(e.getSource()==bt5)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"5");
else
{ tf.setText("");
tf.setText(tf.getText()+"5");j=1;}
}
if(e.getSource()==bt6)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"6");
else
{ tf.setText("");
tf.setText(tf.getText()+"6");j=1;}
}
if(e.getSource()==bt7)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"7");
else
{ tf.setText("");
tf.setText(tf.getText()+"7");j=1;}
}
if(e.getSource()==bt8)
{ if(j==1)
tf.setText(tf.getText()+"8");
else
{ tf.setText("");
tf.setText(tf.getText()+"8");j=1;}
}
if(e.getSource()==bt9)
{ a=1;
if(j==1)
tf.setText(tf.getText()+"9");
else
{ tf.setText("");
tf.setText(tf.getText()+"9");j=1;}
}
if(e.getSource()==point)
{ if(b==0)
{ if(j==1)
{tf.setText(tf.getText()+".");b=1;}//b用来判断是否存在小数点,b为0说明没小点数,反之则有
else
{ tf.setText("");
tf.setText(tf.getText()+".");j=1;b=1;}
}
}
if(e.getSource()==fu) //正负判断
{
total=Double.parseDouble(tf.getText());
{ if(total>0)
{tf.setText("-"+tf.getText());}
else
if(total<0)
{ tf.setText(tf.getText().substring(1));}
}
}
if(e.getSource()==jia) //a 用于判断输入数据是否是 "数字" "运算符""数字" 这种形式,如果是连续的"运算符"先不计算
{ i++;b=0;c=0;
if(i==1)
{x1=Double.parseDouble(tf.getText());total=x1;j=2;str="+";a=0;}
else
{ jisuan();str="+";}
}
if(e.getSource()==jian)
{ i++;b=0;c=0;
if(i==1)
{x1=Double.parseDouble(tf.getText());total=x1;j=2;str="-";a=0;}
else
{ jisuan();str="-";}
}
if(e.getSource()==cheng)
{ i++;b=0;c=0;
if(i==1)
{x1=Double.parseDouble(tf.getText());total=x1;j=2;str="*";a=0;}
else
{jisuan(); str="*";}
}
if(e.getSource()==chu)
{ i++;b=0;c=0;
if(i==1)
{x1=Double.parseDouble(tf.getText());total=x1;j=2;str="/";a=0;}
else
{jisuan();str="/";}
}
if(e.getSource()==deng)
{
if(c==0) //变量c 是为了解决 2*3*3*3*3....这种连乘所出现的问题
{x2=Double.parseDouble(tf.getText());c++;}
if(str=="+") {total=x2+total;i=0;tf.setText(Double.toString(total)); j=2;}
if(str=="-") {total=total-x2;i=0;tf.setText(Double.toString(total)); j=2;}
if(str=="*") {total=x2*total;i=0;tf.setText(Double.toString(total)); j=2;}
if(str=="/")
{if(x2==0)
{ tf.setText("~o~ 除数不能为0");
JOptionPane.showMessageDialog(f,"除数不能为0");
}
else
total=total/x2; //比以上多出部分是处理除数为0情况
i=0;tf.setText(Double.toString(total));j=2;}
}
if(e.getSource()==sqrt)
{ i++;b=0;c=0;
total=Double.parseDouble(tf.getText());
total=Math.sqrt(total);
tf.setText(Double.toString(total));
if(i==1)
{x1=Double.parseDouble(tf.getText());total=x1;j=2;str="-";a=0;}
else
{ jisuan();str="sqrt";}
}
if(e.getSource()==reset)
{i=0;j=2;total=0;x2=0;x1=0;b=0;c=0;tf.setText("0");str=null;}
//初如化变量.....使程序恢复刚启动的状态
}
}
/*
一、变理j的赋值是为了向文本框输入多位数,而不出错。原理:当按下运算符号,j赋值为2。
当j=2时。说明第一次输值完毕,文本框可清空。当按下数字键时,就判断j是1还是2,
是2就清空文本框,同时j赋为1,为输多位数准备。j的作用就是判断输入是否完毕
二、字符串str是完成数字连续运算的关键.
三、i是判断是否是第一次按运算符钮。
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -