本文目录
- 求JAVA计算器核心源代码
- 求一份JAVA计算器源代码,要有()+-*/和清除键及小数点的,不用科学计算器
- 用JAVA编写的科学计算器源代码
- 编写java application程序实现一个简易计算器
- java 写的计算器源代码只实现加减乘除四则运算即可
- 求“用JAVA编写的计算器程序代码“
- java计算器的源代码
- java计算器16个按钮(要用for循环打出来的)源代码
- java编写计算器的源程序
- 用java写的电脑附件中计算器的源代码
求JAVA计算器核心源代码
按钮b1,数字1的按钮JButton b1=new JButton(“1“);
文本框JTextField jtp=new JTextField();
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jtp.setText(“1“);
}
});
b.addActionListener(this);//按钮b添加事件监听器
addWindowListener(new WindowAdapter() {//窗口事件
public void windowClosing(WindowEvent ee) {//关闭窗口
System.exit(0);//关闭窗口退出进程
}
});
public void actionPerformed(ActionEvent rr)//实现ActionListener接口的方法actionPerformed(ActionEvent e)
{
tt.setText(tt.getText()+rr.getActionCommand());
}
求一份JAVA计算器源代码,要有()+-*/和清除键及小数点的,不用科学计算器
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
class CalculatorPanel extends JPanel {
private JPanel jp; // 中间的面板
private double result; // 计算结果
private boolean start; // 用于判断是否是首次输入,true首次,false不是首次
private boolean flag; // 用于判断是否清空显示区域的值,true需要,false不需要
private String lastCommand; // 用于保存运算符
JButton display; // 显示区域
public CalculatorPanel() {
// 初始化各项值
result = 0;
start = true;
flag = false;
lastCommand = “=“;
// 设置CalculatorPanel这个面板的布局为框架布局
setLayout(new BorderLayout());
// 这个按钮用来显示值的区域
display = new JButton(“0.0“);
display.setEnabled(false);// 按钮样式设置为禁用样式
// 用来初始化,清除用的
JButton clear = new JButton(“clear“);
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 作初始化的操作
result = 0;
start = true;
flag = false;
lastCommand = “=“;
display.setText(“0.0“);
}
});
jp = new JPanel();
// 将此面板布局设置为网格布局,4行4列
jp.setLayout(new GridLayout(4, 4));
// 实例化监听器对象
NumberAction na = new NumberAction();
CommandAction ca = new CommandAction();
makeButton(“7“, na);
makeButton(“8“, na);
makeButton(“9“, na);
makeButton(“/“, ca);
makeButton(“4“, na);
makeButton(“5“, na);
makeButton(“6“, na);
makeButton(“*“, ca);
makeButton(“1“, na);
makeButton(“2“, na);
makeButton(“3“, na);
makeButton(“-“, ca);
makeButton(“0“, na);
makeButton(“.“, na);
makeButton(“+“, ca);
makeButton(“=“, ca);
// 将面板,两个按键加入到我的面板,实现计算器的界面
add(display, BorderLayout.NORTH);
add(jp, BorderLayout.CENTER);
add(clear, BorderLayout.SOUTH);
}
private void makeButton(String buttonName, ActionListener al) {
JButton jb = new JButton(buttonName);
jp.add(jb);
jb.addActionListener(al);
}
// 数字监听器
private class NumberAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton) e.getSource(); // 获取事件源对象
String input = jb.getText(); // 获取事件源对象上的标签
if (start) { // 首次输入
// 一上就“.“,就什么也不做
if (input.equals(“.“)) {
return;
}
// 如果是“0.0“的话,就清空
if (display.getText().equals(“0.0“)) {
display.setText(““);
}
start = false;// 改变是否首次输入的标记值
} else {
// 判断显示区域的值里面是否已经有“.“,如果有,输入的又是“.“,就什么都不做
if (display.getText().indexOf(“.“) != -1) {
if (input.equals(“.“)) {
return;
}
}
// 判断显示区域的值里面只有“-“,输入的又是“.“,就什么都不做
if (display.getText().equals(“-“)) {
if (input.equals(“.“)) {
return;
}
}
// 判断显示区域的值如果是“0“,输入的不是“.“,就什么也不做
if (display.getText().equals(“0“)) {
if (!input.equals(“.“)) {
return;
}
}
}
// 如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值
if (flag) {
display.setText(““);
flag = false;// 还原初始值,不需要清空
}
display.setText(display.getText() + input);// 设置显示区域的值
}
}
// 运算符监听器
private class CommandAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton) e.getSource(); // 获取事件源对象
String inputCommand = jb.getText(); // 获取事件源对象上的标签
if (start) {// 首次输入
// 一上就是“-“
if (inputCommand.equals(“-“)) {
display.setText(“-“);// 显示区域的内容设置为“-“
start = false;// 改变首次输入的标记
}
} else {
if (!flag) {// 如果flag=false不需要清空显示区的值,就调用方法计算
calculate(Double.parseDouble(display.getText()));// 保存显示区域的值,并计算
}
// 保存你点击的运算符
lastCommand = inputCommand;
flag = true;// 因为我这里已经输入过运算符,
}
}
}
// 计算用的方法
private void calculate(double x) {
if (lastCommand.equals(“+“)) {
result += x;
} else if (lastCommand.equals(“-“)) {
result -= x;
} else if (lastCommand.equals(“*“)) {
result *= x;
} else if (lastCommand.equals(“/“)) {
result /= x;
} else if (lastCommand.equals(“=“)) {
result = x;
}
display.setText(““ + result);
}
}
class MyFrameUitl {
public static void init(JFrame jFrame, Dimension frameSize, String title,
String iconFileName, boolean resizable) {
Toolkit tk = Toolkit.getDefaultToolkit(); // 系统工具包,可以读取系统信息
Dimension screenSize = tk.getScreenSize();// 获取屏幕大小
// 获取宽高
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;
// 找中心点
int centerX = screenWidth / 2;
int centerY = screenHeight / 2;
// 解析窗体大小
int frameWidth = frameSize.width;
int frameHeight = frameSize.height;
// 设置窗体位置
jFrame.setBounds(centerX - frameWidth / 2, centerY - frameHeight / 2,
frameWidth, frameHeight);
jFrame.setTitle(title);// 设置标题
if (iconFileName != null) {
jFrame.setIconImage(tk.getImage(iconFileName));// 设置图标
}
// 设置皮肤com.sun.java.swing.plaf.windows.WindowsLookAndFeel
/**/
try {
UIManager.setLookAndFeel(“com.sun.java.swing.plaf.windows.WindowsLookAndFeel“);
SwingUtilities.updateComponentTreeUI(jFrame);
} catch (Exception e1) {
e1.printStackTrace();
}
jFrame.setResizable(resizable);// 设置窗体是否可以改变大小
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置程序关闭动作
jFrame.setVisible(true);// 显示窗体
}
}
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
add(new CalculatorPanel());
MyFrameUitl.init(this, new Dimension(400, 300), “简易计算器“, null,
false);
this.pack();// 让组件按原始大小显示,并且窗体的大小刚好能够容纳所有的组件
}
}
public class CalculatorTest {
public static void main(String args) {
new CalculatorFrame();
}
}
运行结果:
用JAVA编写的科学计算器源代码
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Counter extends WindowAdapter
{
static JFrame f=new JFrame(“计算器“);
static JTextField text1=new JTextField(“0.“);
static String source=““;
static String cal=““;
static String object=““;
static boolean flag=false;
static boolean flag1=true;
static boolean flag2=false;
public void init()
{
try
{
Container c=f.getContentPane();
JPanel pan1=new JPanel();
JButton b1=new JButton(“1“);
JButton b2=new JButton(“2“);
JButton b3=new JButton(“3“);
JButton b4=new JButton(“4“);
JButton b5=new JButton(“5“);
JButton b6=new JButton(“6“);
JButton b7=new JButton(“7“);
JButton b8=new JButton(“8“);
JButton b9=new JButton(“9“);
JButton b0=new JButton(“0“);
JButton b11=new JButton(“+“);
JButton b12=new JButton(“-“);
JButton b13=new JButton(“*“);
JButton b14=new JButton(“/“);
JButton b15=new JButton(“.“);
JButton b16=new JButton(“=“);
JButton bclar=new JButton(“清零“);
text1.setHorizontalAlignment(JTextField.RIGHT);
c.add(text1,“North“);
c.add(pan1);
A aa=new A();
Result re=new Result();
Opertion op=new Opertion();
Clar cl=new Clar();
b1.addActionListener(aa);
b2.addActionListener(aa);
b3.addActionListener(aa);
b4.addActionListener(aa);
b5.addActionListener(aa);
b6.addActionListener(aa);
b7.addActionListener(aa);
b8.addActionListener(aa);
b9.addActionListener(aa);
b0.addActionListener(aa);
b11.addActionListener(op);
b12.addActionListener(op);
b13.addActionListener(op);
b14.addActionListener(op);
b16.addActionListener(re);
b15.addActionListener(aa);
bclar.addActionListener(cl);
pan1.add(b1);
pan1.add(b2);
pan1.add(b3);
pan1.add(b11);
pan1.add(b4);
pan1.add(b5);
pan1.add(b6);
pan1.add(b12);
pan1.add(b7);
pan1.add(b8);
pan1.add(b9);
pan1.add(b13);
pan1.add(b0);
pan1.add(b15);
pan1.add(b16);
pan1.add(b14);
pan1.add(bclar);
f.setSize(200,220);
f.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
class A implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String a=text1.getText();
String s=e.getActionCommand();
if(a.equals(“0.“)||a.equals(“+“)||a.equals(“-“)||a.equals(“*“)||a.equals(“/“))
text1.setText(s);
else {
if(flag2)
{
text1.setText(s);
flag2=false;
}
else
text1.setText(a+s);
}
}
}
class Opertion implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
cal=e.getActionCommand();
if(flag1==true)
source=text1.getText();
text1.setText(cal);
flag1=false;
flag=true;
}
}
class Result implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double num1;
num1=Double.parseDouble(source);
object=text1.getText();
double num2;
num2=Double.parseDouble(object);
double result=0;
if(cal.equals(“+“))
result=num1+num2;
if(cal.equals(“-“))
result=num1-num2;
if(cal.equals(“*“))
result=num1*num2;
if(cal.equals(“/“))
if(num2==0)
text1.setText(“除数不能为0“);
else
result=num1/num2;
String s1=Double.toString(result);
text1.setText(s1);
flag1=true;
flag2=true;
}
}
class Clar implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
text1.setText(“0.“);
}
}
public static void main(String args)
{
Counter count=new Counter();
count.init();
}
public void windowClosing(WindowEvent e){
System.exit(1);
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}
编写java application程序实现一个简易计算器
Java计算器 源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**********************Java计算器 主类*********************/
public class SunnyCalculator implements ActionListener {
JFrame f;
JMenu mEdit;
JMenu mView;
JMenu mHelp;
JMenuItem mCopy;
JMenuItem mPaste;
JTextField tResult;
JButton bNumber;
JButton bOperator;
JButton bOther;
JButton bM;
boolean isDouble=false;//是否为实数
int opFlag=-1;
static double t1=0,t2=0,t3=0,result=0;
static int opflag1=-1,opflag2=-1,flag=0,resflag=1;
int preOp,currentOp=0;//标准位
double op1=0,op2=0;//操作数
double n3;
StringBuffer buf=new StringBuffer(20);
StringBuffer copyBoard=new StringBuffer(20);//剪贴板
StringBuffer memory=new StringBuffer(20);//M系列
StringBuffer str=new StringBuffer();
//Java计算器 构造器
public SunnyCalculator()
{
f = new JFrame(“Sunny计算器_杨梅树的盔甲“);
Container contentPane = f.getContentPane();
/**************************Java计算器 菜单的创建*****************************/
JMenuBar mBar = new JMenuBar();
mBar.setOpaque(true);
mEdit = new JMenu(“编辑(E)“);
mEdit.setMnemonic(KeyEvent.VK_E);
mCopy = new JMenuItem(“复制(C)“);
mEdit.add(mCopy);
mPaste = new JMenuItem(“粘贴(P)“);
mEdit.add(mPaste);
mView = new JMenu(“查看(V)“);
mView.setMnemonic(KeyEvent.VK_V);
mView.add(new JMenuItem(“标准型“));
mView.add(new JMenuItem(“科学型“));
mView.addSeparator();
mView.add(new JMenuItem(“查看分组“));
mHelp = new JMenu(“帮助(H)“);
mHelp.setMnemonic(KeyEvent.VK_H);
mHelp.add(new JMenuItem(“帮助主题“));
mHelp.addSeparator();
mHelp.add(new JMenuItem(“关于计算器“));
mBar.add(mEdit);
mBar.add(mView);
mBar.add(mHelp);
f.setJMenuBar(mBar);
contentPane.setLayout(new BorderLayout());
JPanel pTop = new JPanel();
tResult = new JTextField(“0.“,26);
tResult.setHorizontalAlignment(JTextField.RIGHT);
tResult.setEditable(false);
pTop.add(tResult);
contentPane.add(pTop,BorderLayout.NORTH);
JPanel pBottom = new JPanel();
pBottom.setLayout(new BorderLayout());
JPanel pLeft = new JPanel();
pLeft.setLayout(new GridLayout(5,1,3,3));
bM = new JButton(“ “);
bM.setEnabled(false);
pLeft.add(bM);
/*************************Java计算器 功能键定义***************************/
bOther = new JButton(“MC“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
bOther = new JButton(“MR“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
bOther = new JButton(“MS“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
bOther = new JButton(“M+“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
pBottom.add(pLeft,BorderLayout.WEST);
JPanel pRight = new JPanel();
pRight.setLayout(new BorderLayout());
JPanel pUp = new JPanel();
pUp.setLayout(new GridLayout(1,3,3,0));
bOther = new JButton(“BackSpace“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,0,3,5));
pUp.add(bOther);
bOther = new JButton(“CE“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
pUp.add(bOther);
bOther = new JButton(“C“);
bOther.addActionListener(this);
bOther.setForeground(Color.red);
pUp.add(bOther);
/***************************Java计算器 数字键盘区定义**************************/
JPanel pDown = new JPanel();
pDown.setLayout(new GridLayout(4,5,3,2));
bNumber = new JButton(“7“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bNumber = new JButton(“8“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bNumber = new JButton(“9“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bOperator = new JButton(“/“);
bOperator.setForeground(Color.red);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,0,3,0));
pDown.add(bOperator);
bOperator = new JButton(“sqrt“);
bOperator.addActionListener(this);
bOperator.setForeground(Color.red);
bOperator.setMargin(new Insets(3,0,3,0));
pDown.add(bOperator);
bNumber = new JButton(“4“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
bNumber.setHorizontalTextPosition(JButton.LEFT);
pDown.add(bNumber);
bNumber = new JButton(“5“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bNumber = new JButton(“6“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bOperator = new JButton(“*“);
bOperator.setForeground(Color.red);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bOperator = new JButton(“%“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bNumber = new JButton(“1“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bNumber = new JButton(“2“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bNumber = new JButton(“3“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bOperator = new JButton(“-“);
bOperator.setForeground(Color.red);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bOperator = new JButton(“1/x“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
pDown.add(bOperator);
bNumber = new JButton(“0“);
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
bOperator = new JButton(“+/-“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bOperator = new JButton(“.“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bOperator = new JButton(“+“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
bOperator = new JButton(“=“);
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(new Insets(3,3,3,3));
pDown.add(bOperator);
pRight.add(pUp,BorderLayout.NORTH);
pRight.add(pDown,BorderLayout.SOUTH);
pBottom.add(pRight,BorderLayout.EAST);
contentPane.add(pBottom,BorderLayout.SOUTH);
f.setSize(new Dimension(320,256));
f.setResizable(false);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
/************************Java计算器 计算方法区***************************/
public void actionPerformed(ActionEvent e)
{
String s = e.getActionCommand();
if(s.equals(“复制(C)“))
{
String temp = tResult.getText().trim();
copyBoard.replace(0, copyBoard.length(), temp);
mPaste.setEnabled(true);
}
else if(s.equals(“粘贴(p)“))
{
tResult.setText(copyBoard.toString());
}
else if(s.equals(“CE“))
{
//如果是CE则清除文本框
tResult.setText(“0.“);
}
else if(s.equals(“BackSpace“))
{
if(!tResult.getText().trim().equals(“0.“))
{
//如果文本框中有内容
if(str.length()!=1 && str.length()!=0)
{
tResult.setText(str.delete(str.length()-1,str.length()).toString());
}
else
{
tResult.setText(“0.“);
str.setLength(0);
}
}
op2 = Double.parseDouble(tResult.getText().trim());
}
else if(s.equals(“C“))
{
//如果是C删除当前计算
tResult.setText(“0.“);
op1 = op2 = 0;
str.replace(0, str.length(), “ “);
preOp = currentOp = 0;
}
else if(s.equals(“MC“))
{
//如果是MC则清除缓冲区
String temp = ““;
memory.replace(0, memory.length(), temp);
bM.setText(“ “);
}
else if(s.equals(“MR“))
{
//如果按键为MR则恢复缓冲区的数到文本框
tResult.setText(memory.toString());
}
else if(s.equals(“MS“))
{
//如果按键为MS则将文本框的数存入缓冲区
String s1 = tResult.getText().trim();
memory.replace(0, memory.length(), s1);
bM.setText(“M“);
}
else if(s.equals(“M+“))
{
//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果
String temp1 = tResult.getText().trim();
double dtemp = Double.parseDouble(temp1);
String temp2 = memory.toString();
dtemp += Double.parseDouble(temp2);
temp1 = String.valueOf(dtemp);
memory.replace(0, memory.length(), temp1);
}
else if(s.equals(“1/x“))
{
//如果按键为1/x则将文本框中的数据为它的倒数
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(““+1/dtemp);
}
else if(s.equals(“sqrt“))
{
//如果按键为sqrt则将文本框中的内容求平方根
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(““+Math.sqrt(dtemp));
}
else if(s.equals(“+“))
{
str.setLength(0);
if(currentOp==0)
{
preOp = currentOp = 1;
op2 = 0;
tResult.setText(““+op1);
}
else
{
currentOp = preOp;
preOp = 1;
switch(currentOp){
case 1:
op1 += op2;
tResult.setText(““+op1);
break;
case 2:
op1 -= op2;
tResult.setText(““+op1);
break;
case 3:
op1 *= op2;
tResult.setText(““+op1);
break;
case 4:
op1 /= op2;
tResult.setText(““+op1);
break;
}
}
}
else if(s.equals(“-“)){
str.setLength(0);
if(currentOp==0)
{
preOp=currentOp=2;//op1=op2;op2=0;
tResult.setText(““+op1);
}
else
{
currentOp =preOp;
preOp =2;
switch(currentOp){
case 1:op1=op1+op2;tResult.setText(““+op1);break;
case 2:op1=op1-op2;tResult.setText(““+op1);break;
case 3:op1=op1*op2;tResult.setText(““+op1);break;
case 4:op1=op1/op2;tResult.setText(““+op1);break;
}
}
}
else if(s.equals(“*“))//*
{
str.setLength(0);
if(currentOp==0)
{
preOp=currentOp=3;//op1=op2;op2=1;
tResult.setText(““+op1);//op1=op2;
}
else
{
currentOp =preOp;
preOp =3;
switch(currentOp){
case 1:op1=op1+op2;tResult.setText(““+op1);break;
case 2:op1=op1-op2;tResult.setText(““+op1);break;
case 3:op1=op1*op2;tResult.setText(““+op1);break;
case 4:op1=op1/op2;tResult.setText(““+op1);break;
}
}
}
else if(s.equals(“/“))// /
{
str.setLength(0);
if(currentOp==0)
{
preOp=currentOp=4;//op2=1;
tResult.setText(““+op1);//op1=op2;
}
else
{
currentOp =preOp;
preOp =4;
switch(currentOp){
case 1:op1=op1+op2;tResult.setText(““+op1);break;
case 2:op1=op1-op2;tResult.setText(““+op1);break;
case 3:op1=op1*op2;tResult.setText(““+op1);break;
case 4:op1=op1/op2;tResult.setText(““+op1);break;
}
}
}
else if(s.equals(“=“))// =
{
if(currentOp==0)
{
str.setLength(0);
tResult.setText(““+op2);
}
else
{
str.setLength(0);
currentOp =preOp;
switch(currentOp){
case 1:op1=op1+op2;tResult.setText(““+op1);break;
case 2:op1=op1-op2;tResult.setText(““+op1);break;
case 3:op1=op1*op2;tResult.setText(“&qu
java 写的计算器源代码只实现加减乘除四则运算即可
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;
public class calculator
{
String str1=“0“; //运算数1 初值一定为0 为了程序的安全
String str2=“0“; //运算数2
String fh=“+“; //运算符
String jg=““;//结果
//状态开关 重要
int k1=1;//开关1 用于选择输入方向 将要写入str2或 str2
int k2=1;//开关2 符号键 次数 k2》1说明进行的是2+3-9+8 这样的多符号运算
int k3=1;//开关3 str1 是否可以被清0 ==1时可以 !=1时不能被清0
int k4=1;//开关4 str2 同上
int k5=1;//开关5 控制小数点可否被录入 ==1时可以 !=1 输入的小数点被丢掉
JButton jicunqi; //寄存器 记录 是否连续按下符号键
Vector vt=new Vector(20,10);
JFrame frame=new JFrame(“sunshine---计算器“);
JTextField jg_TextField=new JTextField(jg,20);//20列
JButton clear_Button=new JButton(“清除“);
JButton button0=new JButton(“0“);
JButton button1=new JButton(“1“);
JButton button2=new JButton(“2“);
JButton button3=new JButton(“3“);
JButton button4=new JButton(“4“);
JButton button5=new JButton(“5“);
JButton button6=new JButton(“6“);
JButton button7=new JButton(“7“);
JButton button8=new JButton(“8“);
JButton button9=new JButton(“9“);
JButton button_Dian=new JButton(“.“);
JButton button_jia=new JButton(“+“);
JButton button_jian=new JButton(“-“);
JButton button_cheng=new JButton(“*“);
JButton button_chu=new JButton(“/“);
JButton button_dy=new JButton(“=“);
public static void main(String args)
{
calculator calculator=new calculator();
}
calculator()
{
jg_TextField.setHorizontalAlignment(JTextField.RIGHT );//文本框 右对齐
JPanel pan=new JPanel();
pan.setLayout(new GridLayout(4,4,5,5));//四行四列 边距为5像素
pan.add(button7);
pan.add(button8);
pan.add(button9);
pan.add(button_chu);
pan.add(button4);
pan.add(button5);
pan.add(button6);
pan.add(button_cheng);
pan.add(button1);
pan.add(button2);
pan.add(button3);
pan.add(button_jian);
pan.add(button0);
pan.add(button_Dian);
pan.add(button_dy);
pan.add(button_jia);
pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));//pan对象的边距
JPanel pan2=new JPanel();
pan2.add(jg_TextField);
JPanel pan3=new JPanel(); //为什么要 多此一句呢? 因为我不会设置 按钮的大小
pan3.setLayout(new FlowLayout());
pan3.add(clear_Button);
//clear_Button.setSize(10,10);//设置清零按钮的大小 吗的 不好使 !!
frame.setLocation(300, 200); //主窗口 出现在位置
frame.setResizable(false); //不能调大小
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(pan2,BorderLayout.NORTH);
frame.getContentPane().add(pan,BorderLayout.CENTER);
frame.getContentPane().add(pan3,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
//以上是 控件 和 布局
//下面是事件处理 程 序
//--------------- 数 字 键 ----------------
class JianTing implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if (k1==1)
{
if(k3==1)
{
str1=““;
k5=1;//还原开关k5状态
}
str1=str1+ss;
//k2=1;
k3=k3+1;
//System.out.println(str1);
jg_TextField.setText(str1);//显示
}
else if(k1==2)
{
if (k4==1)
{
str2=““;
k5=1; //还原开关k5状态
}
str2=str2+ss;
//k2=2;
k4=k4+1;
///////////////测试////////////////
jg_TextField.setText(str2);
}
}
}
//--------符 号-----------
class JianTing_fh implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss2=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if(k2==1)
{
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;
fh=ss2;
k2=k2+1;//按符号键的次数
}
else
{
int a=vt.size();
JButton c=(JButton)vt.get(a-2); if(!(c.getText().equals(“+“))&&!(c.getText().equals(“-“))&&!(c.getText().equals(“*“))&&!(c.getText().equals(“/“)))
{
yuns();
str1=jg;
k1=2;//开关 k1 为1时,向数1写 为2时,向数2写
k5=1;
k4=1;
fh=ss2;
} k2=k2+1;
}
}
}
//--------清除-------
class JianTing_clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
k5=1;
k2=1;
k1=1;
k3=1;
k4=1;
str1=“0“;
str2=“0“;
fh=““;
jg=““;
jg_TextField.setText(jg);
vt.clear();
}
}
//----------------等 于 ---------------------
class JianTing_dy implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
yuns();
k1=1; //还原开关k1状态
//str1=jg;
k2=1;
k3=1;//还原开关k3状态
k4=1; //还原开关k4状态
str1=jg; //为7+5=12 +5=17 这种计算做准备
}
}
//----------------小数点 ---------------------
class JianTing_xiaos implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if(k5==1)
{
String ss2=((JButton)e.getSource()).getText();
if (k1==1)
{
if(k3==1)
{
str1=““;
k5=1; //还原开关k5状态
}
str1=str1+ss2;
//k2=1;
k3=k3+1;
//System.out.println(str1);
jg_TextField.setText(str1);//显示
}
else if(k1==2)
{
if (k4==1)
{
str2=““;
k5=1; //还原开关k5状态
}
str2=str2+ss2;
//k2=2;
k4=k4+1;
///////////////测试////////////////
jg_TextField.setText(str2);
}
}
k5=k5+1;
}
}
//注册 监听器
JianTing_dy jt_dy=new JianTing_dy();
JianTing jt= new JianTing();//临听数字键
JianTing_fh jt_fh= new JianTing_fh();//临 听符 号键
JianTing_clear jt_c=new JianTing_clear(); //清除键
JianTing_xiaos jt_xs=new JianTing_xiaos();// 小数点 键
button7.addActionListener(jt);
button8.addActionListener(jt);
button9.addActionListener(jt);
button_chu.addActionListener(jt_fh);
button4.addActionListener(jt);
button5.addActionListener(jt);
button6.addActionListener(jt);
button_cheng.addActionListener(jt_fh);
button1.addActionListener(jt);
button2.addActionListener(jt);
button3.addActionListener(jt);
button_jian.addActionListener(jt_fh);
button0.addActionListener(jt);
button_Dian.addActionListener(jt_xs);
button_dy.addActionListener(jt_dy);
button_jia.addActionListener(jt_fh);
clear_Button.addActionListener(jt_c);
//关闭事件处理程序
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//---------------计 算------------------
public void yuns()
{
double a2,b2;//运算数1,2
String c=fh;// 运算符
double jg2=0 ;//结果
if (c.equals(““))
{
//System.out.println(“请输入运算符“);
jg_TextField.setText(“请输入运算符“);
}
else
{
System.out.println(“str1:“+str1);//调试时 使 用
System.out.println(“str2:“+str2);//调试时 使 用
System.out.println(“运算符:“+fh);//调试时 使 用
if (str1.equals(“.“)) //字符串 “.“ 转换成double型数据时 会出错 所以手工转
str1=“0.0“;
if (str2.equals(“.“))
str2=“0.0“;
a2=Double.valueOf(str1).doubleValue();
b2=Double.valueOf(str2).doubleValue();
System.out.println(“double型的a2:“+a2); //调试时 使 用
System.out.println(“double型的b2:“+b2); //调试时 使 用
if (c.equals(“+“))
{
jg2=a2+b2;
}
if (c.equals(“-“))
{
jg2=a2-b2;
}
if (c.equals(“*“))
{
jg2=a2*b2;
}
if (c.equals(“/“))
{
if(b2==0)
{
jg2=0;//0000000000000 by 0 cu!
}
else
{
jg2=a2/b2;
}
}
System.out.println(“double型a2“+fh+“b2结果:“+jg2);
System.out.println();
jg=((new Double(jg2)).toString());
jg_TextField.setText(jg);
}
}
}
求“用JAVA编写的计算器程序代码“
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class jsq
{
public static void main(String str)
{
jisuanqi jsq=new jisuanqi();
jsq.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jsq.setVisible(true);jsq.setSize(300,300);
}
}
class jisuanqi extends JFrame implements ActionListener
{
double a=0,b=0,c=0,fuhao=5;
Boolean has=false;
Container A;
JTextField tf1;
JButton bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt0,bt_dian;
JButton bt_jia,bt_jian,bt_cheng,bt_chu,bt_fuhao;
JButton bt_clear,bt_jisuan;
public jisuanqi()
{
setTitle(“简单计算器“);
A=getContentPane();
GridBagLayout f=new GridBagLayout();
A.setLayout(f);
GridBagConstraints g=new GridBagConstraints();
g.fill=GridBagConstraints.BOTH;
g.gridwidth=1;
g.gridheight=1;
//面板的实例化
//显示框的实例化
tf1=new JTextField(10);tf1.setEditable(false);
//数字键的实例化
bt1=new JButton(“1“);bt2=new JButton(“2“);bt3=new JButton(“3“);
bt4=new JButton(“4“);bt5=new JButton(“5“);bt6=new JButton(“6“);
bt7=new JButton(“7“);bt8=new JButton(“8“);bt9=new JButton(“9“);
bt0=new JButton(“0“);bt_dian=new JButton(“.“);bt_fuhao=new JButton(“+/-“);
//计算符号的实例化
bt_jia=new JButton(“+“);bt_jian=new JButton(“-“);
bt_cheng=new JButton(“*“);bt_chu=new JButton(“/“);
//清空和计算按钮的实例化
bt_clear=new JButton(“clear“);bt_jisuan=new JButton(“=“);
//布局
g.gridx=1;g.gridy=0;A.add(tf1,g);
g.gridx=0;g.gridy=1;A.add(bt_clear,g);
g.gridx=3;g.gridy=1;A.add(bt_jisuan,g);
g.gridx=0;g.gridy=2;A.add(bt7,g);
g.gridx=1;g.gridy=2;A.add(bt8,g);
g.gridx=2;g.gridy=2;A.add(bt9,g);
g.gridx=3;g.gridy=2;A.add(bt_jia,g);
g.gridx=0;g.gridy=3;A.add(bt4,g);
g.gridx=1;g.gridy=3;A.add(bt5,g);
g.gridx=2;g.gridy=3;A.add(bt6,g);
g.gridx=3;g.gridy=3;A.add(bt_jian,g);
g.gridx=0;g.gridy=4;A.add(bt1,g);
g.gridx=1;g.gridy=4;A.add(bt2,g);
g.gridx=2;g.gridy=4;A.add(bt3,g);
g.gridx=3;g.gridy=4;A.add(bt_cheng,g);
g.gridx=0;g.gridy=5;A.add(bt0,g);
g.gridx=1;g.gridy=5;A.add(bt_fuhao,g);
g.gridx=2;g.gridy=5;A.add(bt_dian,g);
g.gridx=3;g.gridy=5;A.add(bt_chu,g);
//添加监听
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);
bt0.addActionListener(this);
//清除、小数点、符号添加监听
bt_clear.addActionListener(this);
bt_dian.addActionListener(this);
bt_fuhao.addActionListener(this);
//符号添加监听
bt_jia.addActionListener(this);
bt_jian.addActionListener(this);
bt_cheng.addActionListener(this);
bt_chu.addActionListener(this);
//计算符号添加监听
bt_jisuan.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
//数字键
if(e.getSource()==bt1)
{tf1.setText(tf1.getText()+“1“);}
else if(e.getSource()==bt2)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“2“);
}
else if(e.getSource()==bt3)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“3“);
}
else if(e.getSource()==bt4)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“4“);
}
else if(e.getSource()==bt5)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“5“);
}
else if(e.getSource()==bt6)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“6“);
}
else if(e.getSource()==bt7)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“7“);
}
else if(e.getSource()==bt8)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“8“);
}
else if(e.getSource()==bt9)
{
if(!tf1.getText().equals(“0“))
tf1.setText(tf1.getText()+“9“);
}
else if(e.getSource()==bt0)
{
if(!tf1.getText().equals(“0“))
{
tf1.setText(tf1.getText()+“0“);
}
}
else if(e.getSource()==bt_dian)//小数点符号
{
if(tf1.getText().indexOf(“.“)==-1&&tf1.getText().length()》0)
{
tf1.setText(tf1.getText()+“.“);
}
}
//运算符号
//fuhao的0,1,2,3分别表示加、减、乘、除
else if(e.getSource()==bt_jia)
{
if(tf1.getText().trim().length()》0)
{ a=Double.valueOf(tf1.getText());
tf1.setText(““);fuhao=0;
has=true;
}
}
else if(e.getSource()==bt_jian)
{
if(tf1.getText().trim().length()》0)
{
a=Double.valueOf(tf1.getText());
tf1.setText(““);fuhao=1;
has=true;
}
}
else if(e.getSource()==bt_cheng)
{
if(tf1.getText().trim().length()》0)
{
a=Double.valueOf(tf1.getText());
tf1.setText(““);fuhao=2;
has=true;
}
}
else if(e.getSource()==bt_chu)
{
if(tf1.getText().trim().length()》0)
{
a=Double.valueOf(tf1.getText());
tf1.setText(““);fuhao=3;
has=true;
}
}
//计算、符号、清空
else if(e.getSource()==bt_jisuan)//计算结果
{
try
{
if(tf1.getText().length()》0&&has)
{
b=Double.valueOf(tf1.getText());
if(fuhao==0)
{
c=a+b;
tf1.setText(String.valueOf(c));
has=false;
}
else if(fuhao==1)
{
c=a-b;
tf1.setText(String.valueOf(c));
has=false;
}
else if(fuhao==2)
{
c=a*b;
tf1.setText(String.valueOf(c));
has=false;
}
else if(fuhao==3)
{
c=a/b;
tf1.setText(String.valueOf(c));
has=false;
}
}
}
catch(Exception ex)
{tf1.setText(ex.getMessage().toString());}
}
else if(e.getSource()==bt_fuhao)
{
if(tf1.getText().indexOf(“-“)==-1&&tf1.getText().length()》0)
{
String s=tf1.getText();
tf1.setText(“-“+s);
}
else
{
if(tf1.getText().length()》0)
{
String s=tf1.getText().substring(1);
tf1.setText(s);
}
}
}
else if(e.getSource()==bt_clear)
{
tf1.setText(““);
}
}
}
java计算器的源代码
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//声明三个面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button 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;
StringBuffer str;//显示屏所显示的字符串
double x,y;//x和y都是运算数
int z;//Z表示单击了那一个运算符.0表示“+“,1表示“-“,2表示“*“,3表示“/“
static double m;//记忆的数字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//显示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText(“0“);
tf2=new TextField(10);//显示记忆的索引值
tf2.setEditable(false);
//实例化所有按钮、设置其前景色并注册监听器
b0=new Button(“Backspace“);
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button(“CE“);
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button(“C“);
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button(“MC“);
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button(“MR“);
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button(“MS“);
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button(“M+“);
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button(“7“);
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button(“8“);
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button(“9“);
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button(“/“);
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button(“sqrt“);
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button(“4“);
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button(“5“);
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button(“6“);
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button(“*“);
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button(“%“);
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button(“1“);
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button(“2“);
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button(“3“);
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button(“-“);
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button(“1/X“);
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button(“0“);
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button(“+/-“);
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(“.“);
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button(“+“);
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button(“=“);
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//实例化四个面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//创建一个空字符串缓冲区
str=new StringBuffer();
//添加面板p0中的组件和设置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
p3.setLayout(gl3);//设置p3的布局
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);
p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//构造监听器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//选择“CE“清零
{
tf1.setText(“0“);//把显示屏清零
str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数
}
else if(e2.getSource()==b2)//选择“C“清零
{
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的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空缓冲区以便接收新的另一个运算数
y=0d;
z=0;
}
else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值
{
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“))//如果初时显示为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)//单击了“1/X“按钮
{
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)//MC为清除内存
{
m=0d;
tf2.setText(““);
str.setLength(0);
}
else if(e2.getSource()==b4)//MR为重新调用存储的数据
{
if(tf2.getText().trim()!=““)//有记忆数字
{
tf1.setText(““+m);
}
}
else if(e2.getSource()==b5)//MS为存储显示的数据
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText(“M“);
tf1.setText(“0“);
str.setLength(0);
}
else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//选择的是其他的按钮
{
if(e2.getSource()==b22)//如果选择的是“0“这个数字键
{
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)//选择的是“BackSpace”按钮
{
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 Counter();
}
}
你在JAVA的环境中运行一下。
这题目也是我的作业,我运行的了。
java计算器16个按钮(要用for循环打出来的)源代码
自己写的,给你参考参考import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Counter implements ActionListener{ /**
* @param args
*/
private JFrame frame;
private JTextField field;
private JButton clear_but;
private JButton buttons;
String str=“123+456-789*0.=/“;
public Counter() {
frame=new JFrame(“计算器t\t\t\t\t\t\t“);
field=new JTextField(15);
clear_but=new JButton(“C“);
buttons=new JButton;
for(int i=0;i《str.length();i++)
{
buttons[i]=new JButton(str.substring(i, i+1));
}
field.setText(““);
}
private void init(){
addEventHandler();
frame.setLayout(new BorderLayout());
JPanel n_panel=new JPanel();
JPanel c_panel=new JPanel();
n_panel.setLayout(new FlowLayout());
frame.add(n_panel,BorderLayout.NORTH);
n_panel.add(field);
n_panel.add(clear_but);
c_panel.setLayout(new GridLayout(4,4));
for(int i=0;i《16;i++)
{
c_panel.add(buttons[i]);
}
frame.add(c_panel, BorderLayout.CENTER);
}
public void showMe(){
init();
frame.setSize(300, 240);
//frame.pack();// frame.setLocation(400,360);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addEventHandler(){
//clear_but.addActionListener(new MyActionListener());
clear_but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
field.setText(““);
}
});
for(int i=0;i《16;i++)
{
final int in=i;
buttons[i].addActionListener(this);
// @Override
// public void actionPerformed(ActionEvent e) {
// System.out.print(e.getActionCommand());
// //System.out.print(str.substring(in, in+1));
// }
//
}
}
String num=““;
String flag=““;
//@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
if(str.equals(“=“)){
Double a=Double.valueOf(num);
Double b=Double.valueOf(field.getText());
double sum=0;
if(flag.equals(“+“)){
sum=a+b;
field.setText(sum+““);
}
if(flag.equals(“-“)){
sum=a-b;
field.setText(““+sum);
}
if(flag.equals(“*“)){
sum=a*b;
field.setText(““+sum);
}
if(flag.equals(“/“)){
sum=a/b;
field.setText(““+sum);
}
System.out.println(a+flag+b+“=“+sum);
}
else if(“.0123456789“.indexOf(str)!=-1){
String newtext=field.getText();
newtext+=str;
field.setText(newtext);
//System.out.print(str);
}
else if(str.matches(“[+*-/]{1}“)){
//else if(“+-*/“.indexOf(str)!=-1){
num=field.getText();
field.setText(““);
flag=str;
// System.out.print(str);
}
}
public static void main(String args) {
new Counter().showMe();
}}
java编写计算器的源程序
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Calculator extends JFrame implements ActionListener {
private JFrame jf;
private JButton allButtons;
private JButton clearButton;
private JTextField jtf;
public Calculator() {
//对图形组件实例化
jf=new JFrame(“任静的计算器1.0:JAVA版“);
jf.addWindowListener(new WindowAdapter(){
public void windowClosing(){
System.exit(0);
}
});
allButtons=new JButton;
clearButton=new JButton(“清除“);
jtf=new JTextField(25);
jtf.setEditable(false);
String str=“123+456-789*0.=/“;
for(int i=0;i《allButtons.length;i++){
allButtons[i]=new JButton(str.substring(i,i+1));
}
}
public void init(){
//完成布局
jf.setLayout(new BorderLayout());
JPanel northPanel=new JPanel();
JPanel centerPanel=new JPanel();
JPanel southPanel=new JPanel();
northPanel.setLayout(new FlowLayout());
centerPanel.setLayout(new GridLayout(4,4));
southPanel.setLayout(new FlowLayout());
northPanel.add(jtf);
for(int i=0;i《16;i++){
centerPanel.add(allButtons[i]);
}
southPanel.add(clearButton);
jf.add(northPanel,BorderLayout.NORTH);
jf.add(centerPanel,BorderLayout.CENTER);
jf.add(southPanel,BorderLayout.SOUTH);
addEventHandler();
}
//添加事件监听
public void addEventHandler(){
jtf.addActionListener(this);
for(int i=0;i《allButtons.length;i++){
allButtons[i].addActionListener(this);
}
clearButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Calculator.this.jtf.setText(““);
}
});
}
//事件处理
public void actionPerformed(ActionEvent e) {
//在这里完成事件处理 使计算器可以运行
String action=e.getActionCommand();
if(action==“+“||action==“-“||action==“*“||action==“/“){
}
}
public void setFontAndColor(){
Font f=new Font(“宋体“,Font.BOLD,24);
jtf.setFont(f);
jtf.setBackground(new Color(0x8f,0xa0,0xfb));
for(int i=0;i《16;i++){
allButtons[i].setFont(f);
allButtons[i].setForeground(Color.RED);
}
}
public void showMe(){
init();
setFontAndColor();
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args){
new Calculator().showMe();
}
}
用java写的电脑附件中计算器的源代码
package mycode;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame{
static private int MAX_NUMBER_LENGTH = 21;
static private int PRIORITY_HIGHEST = 10;
static private int PRIORITY_HIGHER = 9;
static private int PRIORITY_HIGH = 6;
static private int PRIORITY_MIDDLE = 5;
static private int PRIORITY_LOW= 4;
static private int PRIORITY_LOWER = 2;
static private int PRIORITY_LOWEST = 1;
private JTextField t_result; //显示栏
private JPanel p_main; //盛放所有按钮的面板
private JPanel p_num; //数字按钮面板
private JPanel p_oper; //运算符按钮面板
private JPanel p_show; //
private JButton b_num; //数字按钮
private JButton b_oper; //运算符按钮
/**
* 构造函数
*/
public Calculator(){
super(“Calculator“);
t_result = new JTextField(“ 0.0“, MAX_NUMBER_LENGTH);
t_result.setEditable(false);
t_result.setBorder(BorderFactory.createLineBorder(Color.BLUE,3));
p_show = new JPanel();
p_main = new JPanel();
p_num = new JPanel();
p_oper = new JPanel();
p_show.add(t_result);
p_main.setLayout(new BorderLayout());
p_num.setLayout(new GridLayout(4, 3, 1, 1));
p_oper.setLayout(new GridLayout(4, 3, 1, 1));
//数字按钮
b_num = new JButton;
for(int i=0; i《10; i++)
b_num[i] = new JButton(new Integer(i+1).toString());
b_num = new JButton(“0“);
b_num = new JButton(“cls“);
b_num = new JButton(“.“);
//操作符按钮
b_oper = new JButton;
b_oper = new JButton(“+“);
b_oper = new JButton(“-“);
b_oper = new JButton(“*“);
b_oper = new JButton(“/“);
b_oper = new JButton(“pow“);
b_oper = new JButton(“sqrt“);
b_oper = new JButton(“+/-“);
b_oper = new JButton(“=“);
//将按钮放入面板
for(int i=0; i《12; i++)
p_num.add(b_num[i]);
for(int i=0; i《8; i++)
p_oper.add(b_oper[i]);
Container contentPane = getContentPane();
contentPane.add(t_result, BorderLayout.NORTH);
contentPane.add(p_num, BorderLayout.WEST);
contentPane.add(p_oper, BorderLayout.EAST);
//初始化
setSize(400, 400);
setResizable(false);
pack();
setVisible(true);
//注册监听器
ButtonListener bl = new ButtonListener();
for(int i=0; i《12; i++)
b_num[i].addActionListener(bl);
for(int i=0; i《8; i++)
b_oper[i].addActionListener(bl);
}//end constructor
class ButtonListener implements ActionListener{
// 内部类ButtonListener继承ActionListener响应按钮
private String lastOp; //记录前一个运算符
private String strVal; //字符化的计算数值
private double number; //新输入或临时存放数值
private double total; //记录计算数值
private boolean opPressed; //判断operator是否按下
private double numStack; //数字堆栈
private String operStack; //符号堆栈
private int numPoint; //数字堆栈指针
private int operPoint; //符号堆栈指针
ButtonListener(){
numStack = new double[MAX_NUMBER_LENGTH/2];
operStack = new String[MAX_NUMBER_LENGTH/2];
numPoint = 0;
operPoint = 0;
opPressed = false;
strVal = ““;
number = 0.0;
total = 0.0;
System.out.println(“construtor!!“);
}
//用于检查Error的函数,查看各个参数的值
void checkValues(){
System.out.println(“| --------Values check out----------------“);
System.out.println(“| opPressed: “ + opPressed);
System.out.println(“| lastOp: “ + lastOp);
System.out.println(“| strVal: “ + strVal);
System.out.println(“| number: “ + number);
System.out.println(“| total: “ + total);
System.out.println(“| ----------------------------------------“);
}
public void actionPerformed(ActionEvent ae){
String s = ((JButton)ae.getSource()).getActionCommand().trim();
if( Character.isDigit(s.charAt(0)) )
handleNumber(s);
else
calculate(s);
}
/*
* 处理数字
* */
void handleNumber(String s){
if( !opPressed ){ //没按下运算符按钮则为数字
strVal += s;
t_result.setText(strVal);
checkValues();
}
else{
//当按下运算符时,清除strVal并存入新输入数值的第一个数值
opPressed = false;
//lastOp = null;
strVal = s;
t_result.setText(strVal);
checkValues();
}
}
/**/
boolean isUnaryOp(String op){
return ( op.equals(“sqrt“) || op.equals(“=“) ||op.equals(“cls“) ||
op.equals(“+/-“) || op.equals(“.“));
}
/*运算符等级
* 一元运算符 +/-,= ,.,sqrt, cls 为1级
* 二元中pow为2级,*,/为3级,+,-为4级
* */
int operatorPriorityLevel( String op ){
int opPriLevel;
if(isUnaryOp(op)){
opPriLevel = PRIORITY_HIGHEST;
}
else {
if(op.equals(“pow“)){
opPriLevel = PRIORITY_HIGHER;
}
else {
if(op.equals(“*“) || op.equals(“/“)){
opPriLevel = PRIORITY_MIDDLE;
}
else //if(op.equals(“+“) || op.equals(“-“))
{
opPriLevel = PRIORITY_LOW;
}
}
}
return opPriLevel;
}
/* 运算符包括一元(UnaryOp)和二元(BinaryOp)
一元有sqrt,cls,=,+/-,.(小数点)
二元有+,-,*,/,pow
*/
void calculate(String op){
opPressed = true; //运算符被按下
number = getNumberOnDisplay(); //将新输入的数由显示器上的转存入number
if(isUnaryOp(op))
handleUnaryOp(op);
else
handleBinaryOp(op);
}
void handleDecPoint(){
opPressed = false; //事实上小数点不算运算符,在这里我把它作为一种特殊的符号处理
if( strVal.indexOf(“.“)《0 ){
strVal += “.“;
}
t_result.setText(strVal);
checkValues();
}
/* =号较为特殊,且用的频率较高
如果有=号,意味着一次预算的结束
所以opPressed要清零
*/
void handleUnaryOp( String op ){
if( op.equals(“=“) ){ //处理=号的情况
//如果前一预算符是二元运算符
if(lastOp.equals(“+“))
total += number;
else if(lastOp.equals(“-“))
total -= number;
else if(lastOp.equals(“*“))
total *= number;
else if(lastOp.equals(“/“)){
try{
total /= number;
}catch(ArithmeticException ae){
//除0错误!!
t_result.setText(“Error!“);
}
}
else if(lastOp.equals(“pow“)){
total = Math.pow(total, number);
}
if(operPoint == 0){
strVal = new Double(total).toString();
t_result.setText(strVal);
opPressed = false;
numPoint = 0;
operPoint = 0;
lastOp = null;
}
else{ //堆栈中还有压有运算符
number = total;
lastOp = operStack[--operPoint];
total = numStack[--numPoint];
calculate(op);
}
checkValues();
}//end if op.equals(“=“)
else if( op.equals(“sqrt“) ){ //处理sqrt的情况
number = Math.sqrt(number);
strVal = new Double(number).toString();
t_result.setText(strVal);
}
else if(op.equals(“+/-“)){ //处理+/-的情况
number = -number;
strVal = new Double(number).toString().trim();
t_result.setText(strVal);
}
else if(op.equals(“.“)){ //处理小数点
checkValues();
handleDecPoint();
}
else if(op.equals(“cls“)){ //清盘处理!
clear();
}
checkValues();
}
void handleBinaryOp(String op){
//计算二元运算符并且opPressed=true
if(lastOp != null){
//前面有运算符
if(operatorPriorityLevel(lastOp) 》 operatorPriorityLevel(op)
|| operatorPriorityLevel(lastOp) == operatorPriorityLevel(op)){
//前一个运算符优先级大于或等于现在的
if( lastOp.equals(“+“) )
total += number;
else if(lastOp.equals(“-“))
total -= number;
else if(lastOp.equals(“*“))
total *= number;
else if(lastOp.equals(“/“)){
try{
total /= number;
}catch(ArithmeticException ae){
//除0错误!!
t_result.setText(“Error!“);
}
}
else if(lastOp.equals(“pow“)){
total = Math.pow(total, number);
}
number = total;
if(operPoint != 0){ //堆栈中还有压有运算符
lastOp = operStack[--operPoint];
total = numStack[--numPoint];
calculate(op);
}
strVal = (new Double(total)).toString().trim();
t_result.setText(strVal);
lastOp = op;
}
else{//现行运算符优先级高
numStack[numPoint++] = total;
operStack[operPoint++] = lastOp;
total = number;
lastOp = op; //前一运算符压入堆栈所以没lastOp
//calculate(op);
}
} //end
else{
if(operPoint != 0){
lastOp = operStack[--operPoint];
total = numStack[--numPoint];
calculate(op);
}
else{//lastOp = null && operPoint == 0) 即为第一个符号
total = number;
lastOp = op;
}
}
checkValues();
}
void clear(){
numPoint = 0;
operPoint = 0;
opPressed = false;
number = 0.0;
total = 0.0;
strVal = ““;
lastOp = null;
t_result.setText(“ 0.0“);
checkValues();
}
double getNumberOnDisplay(){
return new Double(strVal.trim()).doubleValue();
}
}
public static void main(String args){
new Calculator();
}
}