用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;

如题所述

//注意,没有考虑*/和+-的优先级。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator3 extends JFrame implements ActionListener {
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private JTextField operation; // 结果栏
private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符
private JButton[] numbers; // 数字
// 构造者

public Calculator3() {
setTitle("Calculator");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
operation = new JTextField("0");
operation.setEditable(false);
numbers = new JButton[10];
for (int i = 0; i < 10; i++)
numbers[i] = new JButton("" + i);
dot = new JButton(".");
plus = new JButton("+");
minus = new JButton("-");
multi = new JButton("*");
div = new JButton("/");
sqrt = new JButton("√");
equal = new JButton("=");
changePN = new JButton("±");
clear = new JButton("AC");
// 将窗口物体放入窗口
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, sqrt, 4, 2, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, changePN, 5, 2, 1, 1);
addComponent(layout, clear, 5, 3, 1, 1);
}

// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
if (btn == clear) {
operation.setText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '?';
} else if (btn == equal) {
operate('=');
equaled = true;
} else if (btn == plus) {
operate('+');
equaled = false;
} else if (btn == minus) {
operate('-');
equaled = false;
} else if (btn == multi) {
operate('*');
equaled = false;
} else if (btn == div) {
operate('/');
equaled = false;
} else if (btn == changePN) {
operate('p');
operate('=');
equaled = true;
} else if (btn == sqrt) {
operate('s');
operate('=');
equaled = true;
} else {
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i]) {
if (operation.getText().equals("0"))
operation.setText("" + i);
else if (!operated)
operation.setText(operation.getText() + i);
else {
operation.setText("" + i);
operated = false;
}
}
if (btn == dot && !dotExist) {
operation.setText(operation.getText() + ".");
dotExist = true;
}
}
}

// 进行运算的方法
private void operate(char operator) {
double currentNumber = Double.valueOf(operation.getText())
.doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
operation.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}

// 快捷使用GridBagLayout的方法
private void addComponent(GridBagLayout layout, Component component,
int row, int col, int width, int height) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 2, 10, 2);
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton) component).addActionListener(this);
getContentPane().add(component);
}

// 主方法初始化并显示窗口
public static void main(String[] args) {
Calculator3 calc = new Calculator3();
calc.setSize(290, 400);
calc.setVisible(true);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-08

用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算...
private boolean dotExist, operated, equaled; \/\/ 帮助运算的布尔变量 private double storedNumber; \/\/ 目前的结果 private char lastOperator; \/\/ 表示上一运算符 private JTextField operation; \/\/ 结果栏 private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; \/\/ ...

java calculate是什么
calculate是java实现的一个简易计算器,有基础的加、减、乘、除、乘方、小括号以及清零功能,支持负数和小数的计算,也可以通过junit的使用,来测试calculate.java。实战操作,如何通过对junit的使用,来测试calculate.java?0.juint的安装。下载junit的jar包,在要使用Junit的project名字上,点击properties--...

...能实现普通的运算和三角函数,乘方,开方,n!等比较全面的。
text.setEditable(false);\/\/设置文本不可修改,默认可修改(true)f.add(text, BorderLayout.NORTH);\/\/Frame和Dialog的默认布局管理器是Border Layout ButtonActionListener listener = new ButtonActionListener(text);\/\/事件反应在text中 JPanel buttonPanel = new JPanel();\/\/设法把计算器键盘放到这个J...

java编写程序:创建一个 计算器 的 界面,包含 0-9 个 数字 , A-F个字 ...
如果要用GBK编码,就把字符修改成汉字,比如平方根,乘方JPanel jp0;\/\/存放显示的文本框JPanel jp1;\/\/存放0~9 A~FJPanel jp2;\/\/存放运算符\/\/jp0jp0 = new JPanel();JTextField jtf = new JTextField(16);jtf.setText("0");jtf.setHorizontalAlignment(JTextField....

C语言能够实现简单的加、减、乘、除、乘方、开方运算等,界面美观
{int a,b;printf("请输入一个整数:");scanf("%d",&a);b=a*a;printf("%d",b);return b;} main(){int a;printf("选择你要的运算:1.加法;2.减法;3.乘法;4.除法;5.开方;6.乘方\\n");scanf("%d",&a);if(a==1)plus();else if(a==2)sunbduction();else if(a==3)...

用C++编写简单的计算器? 要求开头用 #include<stdio.h> #include <std...
"* 5.乘方运算 *\\n""* 6.开平方运算 *\\n""* 7.转换为2进制 *\\n""* 8.转换为8进制 *\\n""* 9.转换为16进制 *\\n""* 10.求绝对值 *\\n""* 11.退出 *\\n""***

如何使用计算器进行开方运算?
1. 要使用计算器进行开方运算,首先输入数字32。2. 然后按下x^y键(这个键通常用来表示乘方),接着输入0.2。3. 最后按下等号=,计算器将显示开方运算的结果。计算器的发展历程:1. 计算器的起源可以追溯到古代,大约在公元前3000年左右。那时的人们使用算盘、豆子等简单的物理工具来进行计算。2. ...

算盘能算加减乘除还能算什么
算盘除了能算加减乘除,还可以进行平方、开方等更复杂的数学运算。算盘作为一种传统的计算工具,其功能并不仅限于基本的四则运算。通过特定的算法和操作,算盘还可以用来计算平方、开方、乘方等更高级的数学问题。例如,在计算平方时,可以通过乘法算法的叠加来实现;而开方运算则需要更为复杂的算法和步骤,...

计算器的功能有哪些
1. 上电\/全清键(ON\/AC):按下此键可实现计算器的上电操作,或清除所有寄存器中的数值。2. 清除键(C):在数字输入过程中,按下此键将清除除存储器内容外的所有数值。3. 清除输入键(CE):在数字输入过程中按下此键,将清除输入寄存器中的值,并显示“0”。4. 平方根√:用于计算并显示...

计算器是一种使计算简单快捷的什么
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件,通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储...

相似回答