当前位置:文档之家› 用Java编写一个简单的计算器

用Java编写一个简单的计算器

import java.awt.*;
import java.awt.event.*;
import https://www.doczj.com/doc/0811556605.html,ng.*;
import javax.swing.*;

public class app extends Frame
{
JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,
b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26;
GridLayout gl1, gl2, gl3;
Panel p0, p1, p2, p3,p4;
JTextField tf1;
TextField tf2;
StringBuffer str;
double x, y;
int z;
static double m;


public app()
{
MenuBar mb=new MenuBar();
Menu menu1=new Menu("编辑(E)");
Menu menu2=new Menu("查看(v)");
Menu menu3=new Menu("帮助(H)");
MenuItem mi1=new MenuItem("复制(C) Ctrl+C ");
MenuItem mi2=new MenuItem("粘贴(V) Ctrl+V ");
MenuItem mi3=new MenuItem("标准型(T) ");
MenuItem mi4=new MenuItem("科学型(S) ");
MenuItem mi5=new MenuItem("数据分组(I) ");
MenuItem mi6=new MenuItem("帮助主题(H) ");
MenuItem mi7=new MenuItem("关于计算器(A) ");
p0 = new Panel();
p1 = new Panel();
p2 = new Panel();
p3 = new Panel();
p4 = new Panel();
str = new StringBuffer();
gl1 = new GridLayout(1, 4, 5, 0);
gl2 = new GridLayout(4, 1, 0, 5);
gl3 = new GridLayout(4, 5, 5, 5);

tf1 = new JTextField(27);
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0.");

tf2 = new TextField(10);
tf2.setEditable(false);

setBackground(new Color(180,127,120));
setBounds(300, 250, 400, 400);
p0.add(tf1);
p0.setBounds(5, 50, 390,40);
p4.add(tf2);
p4.setBounds(10,88,50,60);
p1.setLayout(gl1);
p1.setBounds(75, 87, 317, 35);
p2.setLayout(gl2);
p2.setBounds(10, 135, 60, 250);
p3.setLayout(gl3);
p3.setBounds(75, 135, 317, 250);

b0 = new JButton("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new button());
b1 = new JButton("CE");
b1.setForeground(Color.red);
b1.addActionListener(new button());
b2 = new JButton("C");
b2.setForeground(Color.red);
b2.addActionListener(new button());
b3 = new JButton("MC");
b3.setForeground(Color.red);
b3.addActionListener(new button());
b4 = new JButton("MR");
b4.setForeground(Color.red);
b4.addActionListener(new button());
b5 = new JButton("MS");
b5.setForeground(Color.red);
b5.addActionListener(new button());
b6 = new JButton("M+");
b6.setForeground(Color.red);
b6.addActionListener(new button());
b7 = new JButton("7");
b7.addActionListener(new button());
b8 = new JButton("8");
b8.addActionListener(new button());
b9 = new JButton("9");
b9.addActionListener(new button());
b10 = new JButton("/");
b10.addActionListener(new button());
b11 = new JButton("sqrt");
b11.addActionListener(new button());
b12 = new JButton("4");
b12.addActionListener(new button());
b13 = new JButton("5");
b13.addActionListener(new button());
b14 = new JButton("6");
b14.addActionListener(new button());
b15 = new JButton("*");
b15.addActionListener(new button());
b16 = new JButton("%");
b16.addActionListener(new button());
b17 = new JButton("1");
b17.ad

dActionListener(new button());
b18 = new JButton("2");
b18.addActionListener(new button());
b19 = new JButton("3");
b19.addActionListener(new button());
b20 = new JButton("-");
b20.addActionListener(new button());
b21 = new JButton("1/X");
b21.addActionListener(new button());
b22 = new JButton("0");
b22.addActionListener(new button());
b23 = new JButton("+/-");
b23.addActionListener(new button());
b24 = new JButton(".");
b24.addActionListener(new button());
b25 = new JButton("+");
b25.addActionListener(new button());
b26 = new JButton("=");
b26.addActionListener(new button());




p1.add(b0);
p1.add(b1);
p1.add(b2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);


setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
add(p4);
mb.add(menu1);
mb.add(menu2);
mb.add(menu3);
mb.add(menu1);
mb.add(menu2);
mb.add(menu3);
menu1.add(mi1);
menu1.add(mi2);
menu2.add(mi3);
menu2.add(mi4);
menu2.add(mi5);
menu3.add(mi6);
menu3.add(mi7);
setMenuBar(mb);
setResizable(false);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e1) {
System.exit(0);
}
});
setVisible(true);
}



class button implements ActionListener {
public void actionPerformed(ActionEvent e2)
{
try{

if(e2.getSource()==b1)
{
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b2)
{
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b23)
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=0;
}
else if(e2.getSource()==b20)
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)
{
if(tf1.getText().trim().indexOf('.')!=-1)
{

}
else
{
if(tf1.getText().trim().equals("0"))
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}

y=0d;

}
else if(e2.getSource()==b11)
{
x=Double.parseDouble

(tf1.getText().trim());
tf1.setText("数字格式异常");
if(x<0)
tf1.setText("负数没有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)
{

x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{

tf1.setText("除数不能为零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)
{
if(tf2.getText().trim()!="")
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)
{


m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else
{
if(e2.getSource()==b22)
{
if(tf1.getText().trim().equals("0"))
{

}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)
{
if(!tf1.getText().trim().equals("0"))
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());// 可能抛出字符串越界异常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("数字格式异常");
}
catch(StringIndexOutOfBoundsException e){
tf1.setText("字符串索引越界");
}
} }

public static void main(String args[]) {
new app();
}

}

相关主题
文本预览
相关文档 最新文档