//注意,没有考虑*/和+-的优先级.

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);

}

}

java算术运算符乘方_用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;...相关推荐

  1. java算术运算符的分类_6.Java算术运算符

    1.算术运算符的分类:算术运算符: *        + :( 正数,加法 ,连接符) * 连接符: 如果数据和字符串连接一起就是用了"+",那么"+"就成了连 ...

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

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

  3. JAVA算术运算符是什么意思_Java的算术运算符

    Java算术运算符 一.运算符与表达式 Java提供了丰富的运算符,如算术运算符.关系运算符.逻辑运算符.位运算符等. Java语言中的绝大多数运算符和C语言相同,基本语句,如条件分支语句.循环语句等 ...

  4. Java 算术运算符

    Java教程 - Java算术运算符 在数学表达式中使用算术运算符. 所有算术运算符 下表列出了算术运算符: 运算符 结果 + 加法 - 减法 * 乘法 / 除法 % 余数 ++ 自增 += 加法分配 ...

  5. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  6. java中减法命令_实验05——java算术运算符减法

    packagecn.tedu.demo;importjava.math.BigDecimal;/***@author赵瑞鑫 E-mail:1922250303@qq.com *@version1.0 ...

  7. java char判断相等_【Java面试考点4】java基础之运算符

    4.运算符 4.1Java运算符有多少个? Java运算符分为5类22种: 5类:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符 22种: 算术运算符(7种):+,-,*,/,%,++,- ...

  8. 编写java程序的三步骤_帮助Java小白涨知识的教程(三)(运行HelloWorld程序)

    总共有三个步骤:编写----------编译-----------执行 要用的文件:文字编译器(notepad++\editplus...)------------------------------ ...

  9. java算术运算符_JAVA-基础-算术运算符

    算术运算符 运算符是用来计算数据的符号.数据可以是常量,也可以是变量.被运算符操作的数我们称为操作数.算术运算符最常见的操作就是将操作数参与数学计算 运算符 运算规则 范例 结果 + 正号 +3 3 ...

最新文章

  1. wireshare capture filter捕捉过滤的设置
  2. 设计模式的理解: 访问器模式 Visitor
  3. Python中生成一个指定长度的随机字符串实现示例
  4. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
  5. html做3d游戏进微波,射频微波电路设计.html(350页)-原创力文档
  6. jQuery 3D圆盘旋转焦点图 支持鼠标滚轮
  7. jQuery EasyUI DataGrid Checkbox 数据设定与取值
  8. python中filter(),reduce()函数
  9. thoughtworks面试题分析与解答
  10. 技术分享连载(八十六)
  11. 【w3cschool】python3语法复习
  12. JSJ——主数据类型和引用
  13. 【笔记+总结】Andrew Ng-神经网络和深度学习
  14. Delphi编写事件模型客户端(3)
  15. Linux 简单架设防火墙路由器
  16. set的erase函数
  17. airflow问题系列2 —— task保持running假死状态
  18. Linux c 地址空间 堆栈 数据段 代码段 变量存储位置
  19. vue2的 watch的理解(7)
  20. 如何使用iAd在应用程序中展示Banne…

热门文章

  1. music-dl - 利用Python下载全网最优音质歌曲的工具
  2. 2、Class和Subclass
  3. 【东方幻想乡系列模拟赛 Stage 4】 河城荷取
  4. 浅谈互联网流量种类的划分,及其价值所在!做到精准引流定向吸粉。
  5. 多元微积分_二重积分1
  6. 浏览器不支持 flash 插件
  7. 大数据在智慧消防领域的应用
  8. 计算机为什么检测不到u盘启动项,电脑无法识别U盘启动BIOS里面找不到U盘启动项...
  9. 两种方法用宏定义写出swap(x,y)
  10. 技术人的职场晋级指南:当心“1万小时定律”毁了你!