您的位置:首页 > 编程语言 > Java开发

JAVA-计算器

2016-02-25 21:20 435 查看
package yz;
//引入类
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.BigDecimal;
public class Yz extends JFrame implements ActionListener {
JPanel jsq;
JTextField txt;
JButton[] Nums;
int f=  0;
Double g=0.0,h=0.0,j=0.0;
String fh="";
public static void main(String[] args) {
Yz y=new Yz();
}
public Yz(){
jsq=new JPanel();
jsq.setLayout(new GridLayout(  5,  4,  4,  4));
Nums=new JButton[ 20];
String []a={"←","CE","C","%",
"7","8","9","/",
"4","5","6","*",
"1","2","3","-",
".","0","=","+"};
for(int i=  0;i<Nums.length;i++){
Nums[i]=new JButton(a[i]);
jsq.add(Nums[i]);
Nums[i].addActionListener(this);//注册监听
}
txt=new JTextField( 10);
txt.setText("");
txt.setEditable(false);
txt.setRequestFocusEnabled(false);
txt.setHorizontalAlignment(JTextField.RIGHT);
this.add(txt,BorderLayout.NORTH);
this.add(jsq);
this.setVisible(true);     //显示窗体
this.setSize(300,300);     //窗体大小
this.setLocation(550,300); //出现位置
this.setTitle("计算器");         //窗体标题
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭进程
}
//监听
public void actionPerformed(ActionEvent e){
String a=e.getActionCommand();
int b="0123456789".indexOf(a);
int c="+-*/%".indexOf(a);
if(b!=-  1){//如果按下的是数字
if(f==  0){
txt.setText(a);
f=  1;
}
else
{
String d = txt.getText();
txt.setText(d+a);
}
}
else if(c!=-  1)//如果按下的是运算符
{

if(c==  1&&f==  0){
g=0.0;
txt.setText(a);
f=  1;
}
else if(txt.getText().equals("")){
JOptionPane.showMessageDialog(null, "错误", "不能为零请重新输入", JOptionPane.ERROR_MESSAGE);
}
else  {
g=Double.valueOf(txt.getText());
fh=a;
txt.setText("");
f=  0;
}

}
else if("="==a){//如果按下的是等号

if(txt.getText().equals("")){
h=0.0;
}
else
h=Double.valueOf(txt.getText());
if(fh=="+"){//如果按下的是加号
String d1 = String.valueOf(g+h).substring(  0, String.valueOf(g+h).length());
double i;
i=Double.valueOf(d1);
int r=(int)i;
if(r==Double.valueOf(d1)){
d1=d1.substring(  0, d1.length()-  2);
txt.setText(d1);
}
else
txt.setText(d1);

}
if(fh=="-"){//如果按下的是减号
String d2 = String.valueOf(g-h).substring(  0, String.valueOf(g-h).length());
double i;
i=Double.valueOf(d2);
if(i>=  0)
{
float r=(float)i;
if(r==Double.valueOf(d2)){
d2=d2.substring(  0, d2.length()-  2);
txt.setText(d2);

}
else{
txt.setText(d2);
}
}
else{

txt.setText(new BigDecimal(String.valueOf(g-h).substring(  0, String.valueOf(g-h).length())).stripTrailingZeros().toString());

}
}
if(fh=="*"){//如果按下的是乘号
String d3 = String.valueOf(g*h).substring(  0, String.valueOf(g*h).length());
double i;
i=Double.valueOf(d3);
int r=(int)i;
if(r==i){
d3=d3.substring(  0, d3.length()-  2);
txt.setText(d3);

}
else{
txt.setText(d3);

}
}
if(fh=="/"){//如果按下的是除号
if(h==0.0){
JOptionPane.showMessageDialog(null, "错误", "除数不能为零请重新输入", JOptionPane.ERROR_MESSAGE);
txt.setText("");
}
else{
String d4 = String.valueOf(g/h).substring(  0, String.valueOf(g/h).length());
double i;
i=Double.valueOf(d4);
int r=(int)i;
if(r==Double.valueOf(d4)){
d4=d4.substring(  0, d4.length()-  2);
txt.setText(d4);

}
else{
txt.setText(d4);

}
}
}
if(fh=="%"){
String n = txt.getText();
txt.setText(String.valueOf(g/100));
}
}
else if("CE"==a){
h=0.0;
txt.setText("");
}
else if("C"==a){
g=0.0;
h=0.0;
f=  0;
txt.setText("");
}
else if("."==a){
String n = txt.getText();
if(txt.getText().trim().indexOf(".")!=-  1) ;
else
txt.setText(n+".");
}
else if("←"==a){
String xs=txt.getText();
if(xs.length()>=  1)
xs=xs.substring(  0, xs.length()-  1);
txt.setText(xs);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: