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

java 简单计算器

2011-04-30 19:19 183 查看
看视频老师叫我们写的一个小程序, 完成了 总感觉缺点什么! 发上来分享一下





package mycalculator;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calculator
{
public static void main(String[] args)
{
MyFrame frame = new MyFrame("calc");
frame.format();
}
}

// 申明一个计算器界面类
@SuppressWarnings("serial")
class MyFrame extends JFrame implements ActionListener
{

private static String lastnum = ""; //计入文本框原来的数据
private double result; //存放计算结果
private int sign; // 是标志“+ ,- , * , 1 表示+ , 2表示 - , 3表示 * ,4表示 /
private int width = Toolkit.getDefaultToolkit().getScreenSize().width;
private int height = Toolkit.getDefaultToolkit().getScreenSize().height;
private JTextField inputText;

public MyFrame(String str)
{
super(str);
this.setSize(250, 250);
this.setResizable(false);
this.setLocation((width - 250) / 2, (height - 250) / 2);
}

public void format() // 格式窗口
{
MyFrame frame = new MyFrame("calc");
JMenuBar menuBar = new JMenuBar();
JMenu menuEdit = new JMenu("edit");
JMenu menuHelp = new JMenu("help");
JMenuItem menuItemCopy = new JMenuItem("Copy");
JMenuItem menuItemPaste = new JMenuItem("Paste");
JMenuItem menuItemHelp = new JMenuItem("About");

inputText = new JTextField();
inputText.setEditable(false);
//inputText.setText("0");
inputText.setHorizontalAlignment(JTextField.RIGHT);

JPanel p1 = new JPanel(new GridLayout(5, 4, 3, 3));

// 排布按钮 增加监听
Button button1 = new Button("sqrt");
button1.addActionListener(this);
p1.add(button1);

Button button2 = new Button("+/-");
button2.addActionListener(this);
p1.add(button2);

Button button3 = new Button("CE");
button3.addActionListener(this);
p1.add(button3);

Button button4 = new Button("C");
button4.addActionListener(this);
p1.add(button4);

Button button5 = new Button("7");
button5.addActionListener(this);
p1.add(button5);

Button button6 = new Button("8");
button6.addActionListener(this);
p1.add(button6);

Button button7 = new Button("9");
button7.addActionListener(this);
p1.add(button7);

Button button8 = new Button("/");
button8.addActionListener(this);
p1.add(button8);

Button button9 = new Button("4");
button9.addActionListener(this);
p1.add(button9);

Button button10 = new Button("5");
button10.addActionListener(this);
p1.add(button10);

Button button11 = new Button("6");
button11.addActionListener(this);
p1.add(button11);

Button button12 = new Button("*");
button12.addActionListener(this);
p1.add(button12);

Button button13 = new Button("1");
button13.addActionListener(this);
p1.add(button13);

Button button14 = new Button("2");
button14.addActionListener(this);
p1.add(button14);

Button button15 = new Button("3");
button15.addActionListener(this);
p1.add(button15);

Button button16 = new Button("-");
button16.addActionListener(this);
p1.add(button16);

Button button17 = new Button("0");
button17.addActionListener(this);
p1.add(button17);

Button button18 = new Button(".");
button18.addActionListener(this);
p1.add(button18);

Button button19 = new Button("=");
button19.addActionListener(this);
p1.add(button19);

Button button20 = new Button("+");
button20.addActionListener(this);
p1.add(button20);

frame.add(p1, BorderLayout.CENTER);
// inputText.setDocument(new MyTextDocument(35));
frame.setJMenuBar(menuBar);
frame.add(inputText, BorderLayout.NORTH);
menuBar.add(menuEdit);
menuBar.add(menuHelp);
menuEdit.add(menuItemCopy);
menuEdit.add(menuItemPaste);
menuHelp.add(menuItemHelp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e)
{

String temp = e.getActionCommand(); // temp储存按下哪个键

if("0".equals(lastnum) || "".equals(lastnum))
{
if ("9".equals(temp))
{
inputText.setText(input(temp));
}
if ("8".equals(temp))
{
inputText.setText(input(temp));
}
if ("7".equals(temp))
{
inputText.setText(input(temp));
}
if ("6".equals(temp))
{
inputText.setText(input(temp));
}
if ("5".equals(temp))
{
inputText.setText(input(temp));
}
if ("4".equals(temp))
{
inputText.setText(input(temp));
}
if ("3".equals(temp))
{
inputText.setText(input(temp));
}
if ("2".equals(temp))
{
inputText.setText(input(temp));
}
if ("1".equals(temp))
{
inputText.setText(input(temp));
}
}
else
{
if ("9".equals(temp))
{
inputText.setText(input(temp));
}
if ("8".equals(temp))
{
inputText.setText(input(temp));
}
if ("7".equals(temp))
{
inputText.setText(input(temp));
}
if ("6".equals(temp))
{
inputText.setText(input(temp));
}
if ("5".equals(temp))
{
inputText.setText(input(temp));
}
if ("4".equals(temp))
{
inputText.setText(input(temp));
}
if ("3".equals(temp))
{
inputText.setText(input(temp));
}
if ("2".equals(temp))
{
inputText.setText(input(temp));
}
if ("1".equals(temp))
{
inputText.setText(input(temp));
}
if ("0".equals(temp))
{
inputText.setText(input(temp));
}
if("C".equals(temp)) // 删除一个数
{
lastnum = lastnum.substring(0,lastnum.length() - 1);
inputText.setText(lastnum);
}
if("CE".equals(temp))
{
lastnum = "";
inputText.setText("");
}
if("+/-".equals(temp))
{
if( lastnum.startsWith("-")) // 判断原来数是不是负数
{
lastnum = lastnum.substring(1);
inputText.setText(lastnum);
}
else
{
lastnum = "-".concat(lastnum);
inputText.setText(lastnum);
}
}
if("sqrt".equals(temp))
{
result = Math.sqrt((double) Double.parseDouble(lastnum));
inputText.setText(Double.toString(result));
}
if("/".equals(temp))
{

result = Double.parseDouble(inputText.getText());
sign = 4; //4 表示除
inputText.setText("");
lastnum = "";
}
if("*".equals(temp))
{
result = Double.parseDouble(inputText.getText());
sign = 3; //4 表示乘
inputText.setText("");
lastnum = "";
}
if("-".equals(temp))
{
result = Double.parseDouble(inputText.getText());
sign = 2; //4 表示减
inputText.setText("");
lastnum = "";
}
if("+".equals(temp))
{
result = Double.parseDouble(inputText.getText());
sign = 1; //4 表示加
inputText.setText("");
lastnum = "";
}

if("=".equals(temp))
{
switch(sign)
{
case 4 :
result = result / Double.parseDouble(inputText.getText());
break;
case 3 :
result = result * Double.parseDouble(inputText.getText());
break;
case 2 :
result = result - Double.parseDouble(inputText.getText());
break;
default :
result = result + Double.parseDouble(inputText.getText());
}
inputText.setText(Double.toString(result));
}
}
}
public static String input(String str)
{
StringBuffer temp = new StringBuffer(lastnum);
temp.append(str);
lastnum = temp.toString();
return lastnum;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: