Java编写简易计算器
目录
1.功能:
2.结果:
3.代码:
1.功能:
(1)“C”:将之前输入的数字,计算结果等功能全部归零;
(2)“CE”:清除键,清除当前输入的数据或符号;
(3)“MS”:存储当前的显示值。比如计算“3/2”,得到结果1.5,后面的计算中会用到它,这时按一下“MS”按钮存起它;
(4)“MC”:清除当前存储区中的值;
(5)“MR”:将存储区的数调出到显示栏,存储区中的值不变。先按一下清除键,清除显示栏中的数据,然后点击“MR”按钮,刚才存储的数据就显示出来了;
(6)“M+”:将存储区的数与当前显示的数相加,结果存到存储区;
(7)“M-”:将当前显示的数与存储区的数相减,结果存到存储区。
2.结果:
3.代码:
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.String;class WindowOperation extends JFrame {JMenuBar menuBar; //菜单条JMenu menu1, menu2, menu3; //菜单JPanel panel; //按钮面板JTextArea textArea; //文本区JButton[][] button = new JButton[6][5]; //30个按钮String Mem = "0"; //存储区的值WindowOperation() {init();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();}void init() {setBounds(300, 50, 640, 700); //窗口大小setTitle("计算器"); //窗口名称setLayout(new BorderLayout()); //布局样式LineBorder border = new LineBorder(Color.LIGHT_GRAY, 6, true);//文本区域边框设置textArea = new JTextArea(2, 10); //计算区域textArea.setFont(new Font("Calibre", Font.PLAIN, 60)); //设置字体、样式、大小textArea.setBorder(border);String [][] str = {{"MC", "MR", "MS", "M+", "M-"},{"<—", "CE", "C", "±", "√"},{"7", "8", "9", "/", "%"},{"4", "5", "6", "*", "1/x"},{"1", "2", "3", "-", "^2"},{"00", "0", ".", "+", "="}};panel = new JPanel();panel.setLayout(new GridLayout(6, 5));for (int i = 0; i < 6; i++) { //插入各个功能、数字按钮for (int j = 0; j < 5; j++) {button[i][j] = new JButton(str[i][j]);button[i][j].setFont(new Font("黑体", Font.BOLD, 30)); //设置按钮字体、样式、大小panel.add(button[i][j]);}}add(textArea, BorderLayout.NORTH);add(panel);menu1 = new JMenu(" 查看(V) ");menu1.setFont(new Font("宋体", Font.BOLD, 20)); //设置字体、样式、大小menu2 = new JMenu(" 编辑(E) ");menu2.setFont(new Font("宋体", Font.BOLD, 20));menu3 = new JMenu(" 帮助(H) ");menu3.setFont(new Font("宋体", Font.BOLD, 20));menuBar = new JMenuBar();menuBar.add(menu1);menuBar.add(menu2);menuBar.add(menu3);setJMenuBar(menuBar);Event();}public void Event() { //对各种事件注册监视器for (int i = 2; i < 6; i++) {for (int j = 0; j < 5; j++) {//除了”=“和”MC“等功能键,全部设置自己的监视器if(i != 5 || j != 4)button[i][j].addActionListener(new TextListener(button[i][j], textArea));}}//清楚存储区数值button[0][0].addActionListener((e -> Mem = "0"));//显示存储区数值字符串button[0][1].addActionListener(e -> textArea.setText(Mem));//存储结果button[0][2].addActionListener(e -> {Mem = textArea.getText();Mem = Mem.substring(Mem.indexOf('\n')+1); //去掉第一行字符串,只留下结果});//当前文本区的值与存储区的值相加button[0][3].addActionListener(e -> {double x1, x2;x1 = Double.parseDouble(Mem);x2 = Double.parseDouble(textArea.getText());Mem = "" + (x1 + x2);});button[0][4].addActionListener(e -> {double x1, x2;x1 = Double.parseDouble(Mem);x2 = Double.parseDouble(textArea.getText());Mem = "" + (x2 - x1);});button[1][0].addActionListener(new BackListener(textArea));button[1][1].addActionListener(new BackListener(textArea));button[1][2].addActionListener(new ClearListener(textArea));button[1][3].addActionListener(new TextListener(button[1][3], textArea));button[1][4].addActionListener(new TextListener(button[1][4], textArea));button[5][4].addActionListener(new ResultListener(textArea));}
}class ResultListener implements ActionListener {JTextArea textArea;String str; //用来保存文本区域的字符串;public ResultListener(JTextArea textArea1) { //将文本区传入textArea = textArea1;}public void actionPerformed(ActionEvent e) {textArea.setText(textArea.getText() + "="); //获取文本内容str = textArea.getText();if (str.contains("+")) { //如果字符串中包含“+”,做加法运算String str1 = str.substring(0, str.indexOf('+')); //获取加数String str2 = str.substring(str.indexOf('+') + 1, str.indexOf('=')); //获取被加数double x1 = Double.parseDouble(str1); //转化为double类型double x2 = Double.parseDouble(str2);textArea.setText(str + "\n" + (x1 + x2));}else if (str.contains("*")) { //乘法运算String str1 = str.substring(0, str.indexOf('*'));String str2 = str.substring(str.indexOf('*') + 1, str.indexOf('='));double x1 = Double.parseDouble(str1);double x2 = Double.parseDouble(str2);textArea.setText(str + "\n" + x1 * x2);}else if(str.contains("1/x")) { //倒数运算String str1 = str.substring(0, str.indexOf("1/x"));double x1 = Double.parseDouble(str1);if(x1 == 0) textArea.setText(str + "\n" + "不能求倒数");else textArea.setText(str + "\n" + 1/x1);}else if (str.contains("/")) { //除法运算String str1 = str.substring(0, str.indexOf('/'));String str2 = str.substring(str.indexOf('/') + 1, str.indexOf('='));double x1 = Double.parseDouble(str1);double x2 = Double.parseDouble(str2);if (x2 == 0) textArea.setText(str + "\n" + "不能除以0");else textArea.setText(str + "\n" + x1 / x2);}else if (str.contains("^2")) { //平方运算String str1 = str.substring(0, str.indexOf('^'));double x = Double.parseDouble(str1);textArea.setText(str + "\n" + x * x);}else if (str.contains("√")) { //开方运算String str1 = str.substring(str.indexOf('√') + 1, str.indexOf('='));double x = Double.parseDouble(str1);textArea.setText(str + "\n" + Math.sqrt(x));}else if (str.contains("±")) { //加减运算String str1 = str.substring(0, str.indexOf('±'));String str2 = str.substring(str.indexOf('±') + 1, str.indexOf('='));double x1 = Double.parseDouble(str1);double x2 = Double.parseDouble(str2);if (x2 == 0) textArea.setText(str + "\n" + x1);else textArea.setText(str + "\n" + (x1 + x2) + " & " + (x1 - x2));}else if (str.contains("%")) { //百分号运算String str1 = str.substring(0, str.indexOf('%'));double x1 = Double.parseDouble(str1);textArea.setText(str + "\n" + x1/100);}else if (str.contains("-")) { //减法运算if(str.charAt(0) == '-') { //如果第一个字符是“-”,形如-2-3形式,就转化成为-(2+3)形式String str_x = str;str = str.substring(1);String str1 = str.substring(0, str.indexOf('-'));String str2 = str.substring(str.indexOf('-') + 1, str.indexOf('='));double x1 = Double.parseDouble(str1);double x2 = Double.parseDouble(str2);textArea.setText(str_x + "\n" + (-x1-x2));}else {String str1 = str.substring(0, str.indexOf('-'));String str2 = str.substring(str.indexOf('-') + 1, str.indexOf('='));double x1 = Double.parseDouble(str1);double x2 = Double.parseDouble(str2);textArea.setText(str + "\n" + (x1-x2));}}}
}class ClearListener implements ActionListener {JTextArea textArea;public ClearListener(JTextArea textArea1) { //将按钮和文本区传入textArea = textArea1;}public void actionPerformed(ActionEvent e) { //设置文本区textArea.setText("");}
}class BackListener implements ActionListener {JTextArea textArea;String str;public BackListener(JTextArea textArea1) { //将文本区传入textArea = textArea1;}public void actionPerformed(ActionEvent e) { //设置文本区str = textArea.getText();if(str.length() == 0) textArea.setText(""); //如果文本区内容为空,输出为空else { //否则让当前文本区删掉最后一个符号/数字str = str.substring(0, str.length()-1);textArea.setText(str);}}
}class TextListener implements ActionListener {JButton button;JTextArea textArea;public TextListener(JButton button1, JTextArea textArea1) { //将按钮和文本区传入textArea = textArea1;button = button1;}public void actionPerformed(ActionEvent e) { //设置文本区textArea.setText(textArea.getText() + button.getText());}
}public class Calculator {public static void main(String[] args) {new WindowOperation();}
}
Java编写简易计算器相关推荐
- java编写简易计算器_java实现简易计算器功能
本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一 ...
- 用JAVA编写简易计算器界面
import javax.swing.*; public class Demo {/*** 计算器界面* @author M4ndy*/public static void main(String[] ...
- Java编写简易控制台计算器
Java编写简易控制台计算器 主要需求与功能: 包含四个基本运算:加,减,乘,除 利用while循环和switch选择结构 包含两个基本操作数 输出结果后可选择退出或继续使用 import java. ...
- 简单计算器的设计java_(基于java的简易计算器的设计.doc
(基于java的简易计算器的设计 基于java的简易计算器的设计 摘要 自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了 ...
- 基于java平台简易计算器_基于java的简易计算器的设计
基于java的简易计算器的设计 基于java的简易计算器的设计 摘要 自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了C ...
- 用Android Studio 编写简易计算器
用Android Studio 编写简易计算器 界面设计 功能的實現 其他配置 1.頂部標題 2.修改測試 这是用Android Studio编写的 简易计算器 .功能主要是实现简单的加减操作,以及比 ...
- java实现简易计算器,实现加减乘除,括号,算式查错,
java实现简易计算器 问题分析 一.计算机界面显示 二. 计算器计算数据处理 三. 部分源代码(该源码未加入算式查错,文件资源正在上传) 三.完整源码,加减乘除,括号,delete,算式查错 问题分 ...
- java编写某计算器控制台程序_用java程序编写一个计算器
点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...
- JAVA作业-简易计算器
工程名随意,文件名必须为Jisuanqi.java View Code import java.awt.BorderLayout; import java.awt.Color; import java ...
最新文章
- 进程间通信 —— 命名管道
- 树莓派 docker homeassistant_利用树莓派追踪飞机航行轨迹的骚姿势分享(转载)
- Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
- jasmine fixture.debugElement.query的单步调试
- python学习中文第五版_前5个学习Python的网站
- native vlan(本征vlan)----vlan 1 与一般vlan的区别详细解答、tag字段简介、二层异vlan通信、双vlan tag跳跃攻击(附图,建议电脑观看)
- locky勒索样本分析
- 中国金属复合开关设备市场趋势报告、技术动态创新及市场预测
- 状态压缩动态规划 -- 旅行商问题
- not null primary key什么意思_为什么我使用了索引,查询还是慢?
- spring揭秘_理解透彻!Spring中BeanFactory与FactoryBean分析
- 已知p值自由度 求t值 matlab,统计学中的F值、P值和r分别表示什么意思,怎么求-如何查看f值-数学-敖篮友同学...
- 在linux平台上如何修改hostid
- php源码加密 zend_zend_guard对PHP代码进行加密教程
- 编写数码管c语言程序,跪求单片机0~99数码管显示用C语言编写的程序
- java null==null是否成立
- linux桌面系统 5种经典的Linux桌面系统
- Python项目通用的目录结构总结
- [小游戏] 微信小游戏开发源码_教程_工具_资源最新集合
- 疑似流氓软件? 价值4000万的过滤软件绿坝分析报告
热门文章
- 【腾讯笔试题】2019年腾讯实习正式批移动端开发笔试题
- 空间三角形_教师招聘试讲-小学数学 三角形内角和 教案
- vue3 router Cannot use ‘in‘ operator to search for ‘catch‘ in undefined
- 商密算法SM2、SM3、SM4的用途和原理
- 硕士毕业的他做生鲜电商网站,日流水3万元
- golang im实战入门
- 学校留言板网页html和css,html,css,js,简单的网页留言板
- 图像处理之-----插值算法
- 根据地址智能识别省市县/区
- Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装