java计算器的设计思路

合集下载

java计算器设计实验报告

java计算器设计实验报告

java计算器设计实验报告《Java计算器设计实验报告》摘要:本实验报告基于Java语言,设计了一个简单的计算器。

通过使用面向对象的编程方法,实现了基本的加、减、乘、除运算,并且实现了用户界面的交互操作。

本实验报告详细介绍了计算器的设计思路、实现过程和代码结构,并对实验结果进行了分析和总结。

1. 引言计算器是人们日常生活中常用的工具之一,它能够帮助人们进行简单的数学运算。

随着计算器的普及和发展,计算器的功能也越来越丰富,例如科学计算器、金融计算器等。

本实验旨在通过使用Java语言,设计一个简单的计算器,以加深对面向对象编程的理解和应用。

2. 设计思路在设计计算器时,首先需要确定计算器的功能需求,包括加法、减法、乘法、除法等基本运算。

其次,需要考虑用户界面的设计,使用户能够方便地输入数字和选择运算符。

最后,需要考虑计算器的实现方式,包括数据结构的选择、算法的设计等。

3. 实现过程在本实验中,我们使用Java语言和Swing库来实现计算器的设计。

首先,我们创建一个Calculator类来处理计算器的逻辑操作,包括加法、减法、乘法、除法等运算。

然后,我们创建一个CalculatorUI类来处理用户界面的设计,包括数字按钮、运算符按钮和显示屏的设计。

最后,我们将Calculator类和CalculatorUI类进行整合,实现一个完整的计算器。

4. 代码结构以下是计算器的主要代码结构:Calculator类:- add(double a, double b):加法运算- subtract(double a, double b):减法运算- multiply(double a, double b):乘法运算- divide(double a, double b):除法运算CalculatorUI类:- createNumberButton(int number):创建数字按钮- createOperatorButton(String operator):创建运算符按钮- createDisplayScreen():创建显示屏Main类:- main(String[] args):主函数,启动计算器界面5. 实验结果分析通过实验,我们成功地实现了一个简单的计算器,用户能够输入数字并进行加、减、乘、除等运算。

java计算器设计报告

java计算器设计报告

1
目录
摘要.............................................................................................................1 1 概述..........................................................................................................3
5
jButton4.addActionListener(this); pnl.add(jButton4); jButton5=new JButton("5"); jButton5.addActionListener(this); pnl.add(jButton5); jButton6=new JButton("6"); jButton6.addActionListener(this); pnl.add(jButton6); jButtonJIA=new JButton("+"); jButtonJIA.addActionListener(this); pnl.add(jButtonJIA); jButton7=new JButton("7"); jButton7.addActionListener(this); pnl.add(jButton7); jButton8=new JButton("8"); jButton8.addActionListener(this); pnl.add(jButton8); jButton9=new JButton("9"); jButton9.addActionListener(this); pnl.add(jButton9); jButtonJIAN=new JButton("-"); jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN); jButton0=new JButton("0"); jButton0.addActionListener(this); pnl.add(jButton0); jButtonQINGKONG=new JButton("清空"); jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG); jButtonCHENG=new JButton("*"); jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG); jButtonCHU=new JButton("/"); jButtonCHU.addActionListener(this); pnl.add(jButtonCHU); jButtonQUYU=new JButton("%"); jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU); jButtonPINGFANG=new JButton("平方"); jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG); jButtonXIAOSHUDIAN=new JButton("."); jButtonXIAOSHUDIAN.addActionListener(this); pnl.add(jButtonXIAOSHUDIAN);

java课程设计计算器

java课程设计计算器

java课程设计 计算器一、课程目标知识目标:1. 理解Java基本语法和程序结构,掌握算术表达式的编写;2. 掌握使用Java进行数值运算的方法,理解数据类型转换规则;3. 了解简单的异常处理机制,理解其与计算器程序的关系。

技能目标:1. 能够运用所学知识,独立编写一个具备基本功能的计算器程序;2. 学会使用Java控制台输入输出,实现用户与程序的交互;3. 能够通过调试和修改代码,解决计算器程序中的常见错误。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和解决问题的热情;2. 培养学生的团队协作意识,使其学会在编程过程中互相帮助和分享经验;3. 培养学生的逻辑思维能力,提高其分析问题和解决问题的能力。

本课程针对具有一定Java基础的学生设计,结合计算器项目实践,旨在巩固和拓展所学知识,提高学生的编程能力和实际应用能力。

课程注重培养学生的动手实践能力,强调理论与实践相结合,使学生能够在实践中掌握Java编程技巧,培养良好的编程习惯。

通过本课程的学习,学生将能够独立完成一个简单的计算器程序,提高其在实际编程中的问题解决能力。

二、教学内容1. Java基本语法与程序结构复习(教材第3章)- 简单的变量声明与赋值- 基本算术运算符的使用- 程序的控制流程:顺序、分支(if-else)、循环(for、while)2. Java数据类型与运算(教材第4章)- 数据类型转换规则- 运算符优先级- 算术表达式编写3. Java控制台输入输出(教材第5章)- 使用Scanner类进行输入- 使用System.out.print和System.out.println进行输出4. 简单异常处理(教材第7章)- 异常的概念与分类- try-catch语句的使用- 异常处理在计算器程序中的应用5. 计算器程序设计实践- 设计计算器功能需求- 编写计算器程序代码- 调试与优化计算器程序教学内容安排与进度:第一课时:复习Java基本语法与程序结构,明确计算器项目需求第二课时:学习Java数据类型与运算,编写计算器核心算法第三课时:掌握Java控制台输入输出,实现计算器用户交互第四课时:了解简单异常处理,优化计算器程序第五课时:计算器程序设计实践,调试与改进教学内容注重理论与实践相结合,通过逐步引导,使学生能够将所学知识应用于计算器程序设计,提高编程实践能力。

计算器java课程设计(完整版)

计算器java课程设计(完整版)

目录一、课设任务及要求 (1)二、需求分析 (2)三、设计思路 (3)四、详细设计 (4)五、运行调试与分析讨论 (14)六、设计体会与小结 (18)七、参考文献 (19)一、课设任务及要求1)课设任务:⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);⑵、有求倒数、退格和清零功能。

2)创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。

3)设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。

且有小数点、正负号、求倒数、退格和清零功能。

②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。

③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析⑴、开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。

程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。

⑵设计思路设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。

但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。

总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。

java简易计算器设计思路

java简易计算器设计思路

java简易计算器设计思路一、引言(200字)计算器是一种用于进行数学运算的工具,我们经常使用计算器进行简单的加减乘除等运算。

而在计算机编程中,我们也可以设计一个简易计算器的程序,用于实现基本的数学运算功能。

本文将围绕设计一个简易计算器展开,主要包括用户输入的处理、运算符的识别、表达式的计算以及结果的输出等内容。

二、用户输入的处理(200字)计算器首先需要能够接收用户输入的表达式,包括数字和运算符。

在Java中可以使用Scanner类来获取用户的输入。

首先,我们需要创建一个Scanner对象,然后使用nextLine(方法获取用户输入的一行字符串。

接下来,我们需要对输入的字符串进行处理,将数字和运算符分开。

可以使用String的split(方法将字符串按照特定的分隔符进行分割。

根据运算符的特性,常见的分隔符可以是空格、加号、减号、乘号、除号等。

将得到的数字和运算符分别存储在一个列表中,以便后续的处理。

三、运算符的识别(200字)在处理用户输入后,我们需要对运算符进行识别和分类,以便进行相应的数学运算。

Java中可以使用if语句或者switch语句来对运算符进行判断。

针对常见的运算符如加号、减号、乘号、除号等,可以使用简单的逻辑判断语句进行处理。

对于更为复杂的运算符,比如平方根、阶乘、求幂等,可以使用if-else的嵌套语句进行处理。

根据识别结果,我们可以调用相应的数学函数进行运算。

四、表达式的计算(200字)识别运算符后,我们需要对表达式进行计算。

计算器的基本原理是根据输入的数字和运算符进行相应的数学运算,并返回结果。

在Java中,可以使用各种数学运算符,比如加号、减号、乘号、除号、取模等进行计算。

不同的运算符有不同的运算规则,需要根据具体需求进行操作。

在计算过程中,我们需要注意异常情况的处理,比如除零错误、非法运算符等。

Java提供了异常处理机制,可以使用try-catch语句来捕获异常并进行处理。

java实验报告计算器

java实验报告计算器

java实验报告计算器Java实验报告:计算器引言:计算器是我们日常生活中常用的工具之一,它能够帮助我们进行各种数学运算,提高计算的效率。

本实验旨在使用Java编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。

一、需求分析在设计计算器之前,我们首先需要明确计算器的功能需求。

一个基本的计算器应该包括加、减、乘、除四种基本运算,同时还应该具备清零、取反、百分比等附加功能。

在本实验中,我们将实现这些基本功能,并尝试添加一些额外的功能,如开根号、求平方等。

二、设计思路1. 用户界面设计我们可以使用Java的图形用户界面(GUI)库来设计计算器的界面。

可以使用按钮来表示数字和运算符,使用文本框来显示计算结果。

2. 数据结构设计为了实现计算器的功能,我们需要设计一个合适的数据结构来存储用户输入的数字和运算符。

可以使用栈(Stack)数据结构来实现这个功能。

当用户按下数字按钮时,将数字入栈;当用户按下运算符按钮时,将运算符入栈。

当用户按下等号按钮时,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

3. 运算逻辑设计计算器的运算逻辑可以使用逆波兰表达式来实现。

逆波兰表达式是一种不需要括号的数学表达式表示方法,通过后缀表达式的形式来表示运算符的优先级。

在计算器中,我们可以使用栈来实现逆波兰表达式的计算。

三、实验步骤1. 创建一个Java项目,并导入GUI库。

2. 设计计算器的用户界面,包括按钮和文本框。

3. 实现按钮的点击事件,根据用户输入的数字和运算符来更新栈的状态。

4. 实现等号按钮的点击事件,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

5. 实现清零、取反、百分比等附加功能的按钮点击事件。

6. 运行程序,测试计算器的各项功能是否正常。

四、实验结果与分析经过测试,我们的计算器能够正常地进行加、减、乘、除等基本运算,并且附加功能也能正常使用。

通过这个实验,我们不仅学习了Java语言的基本语法和面向对象编程的思想,还加深了对数据结构和逆波兰表达式的理解。

java实验报告——简单计算器的编写五篇范文

java实验报告——简单计算器的编写五篇范文第一篇:java实验报告——简单计算器的编写JAVA实验报告——简单计算器的编写班级:学号:姓名:一、实验目的1.掌握java图形用户界面(GUI)的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.掌握常用组件的事件接口4.应用awt和swing组件进行应用程序设计二、实验条件1.计算机一台2.java软件开发环境三、实验步骤1、编写代码:mport java.awt.*;import java.awt.event.*;import javax.swing.*;public class JCalculator extends JFrame implements ActionListener {private static final long serialVersionUID =-***457Lprivate class WindowCloser extends WindowAdapter {public void windowClosing(WindowEvent we){System.exit(0);}}int i;private final String[] str = { “7”, “8”, “9”, “/”, “4”, “5”, “6”, “*”, “1”,“2”, “3”, “-”, “.”, “0”, “=”, “+” };JButton[] buttons = new JButton[str.length]; JButton reset = new JButton(“CE”); JTextField display = new JTextField(“0”);public JCalculator(){super(“Calculator”);JPanel panel1 = new JPanel(new GridLayout(4, 4)); for(i = 0;i < str.length;i++){buttons[i] = new JButton(str[i]);panel1.add(buttons[i]);}JPanel panel2 = new JPanel(new BorderLayout()); panel2.add(“Center”, display);panel2.add(“East”, reset);getContentPane().setLayout(new BorderLayout()); getContentPane().add(“North”, panel2); getContentPane().add(“Center”, panel1);for(i = 0;i < str.length;i++)buttons[i].addActionListener(this);reset.addActionListener(this);display.addActionListener(this); addWindowListener(new WindowCloser()); setSize(800, 800);setVisible(true);pack();}public void actionPerformed(ActionEvent e){ Object target = e.getSource();String label = e.getActionCommand();if(target == reset)handleReset();else if(“0123456789.”.indexOf(label)> 0)handleNumber(label);elsehandleOperator(label);}boolean isFirstDigit = true;public void handleNumber(String key){if(isFirstDigit)display.setText(key);else if((key.equals(“.”))&&(display.getText().indexOf(“.”)< 0))display.setText(display.getText()+ “.”);else if(!key.equals(“.”))display.setText(display.getText()+ key);isFirstDigit = false;}public void handleReset(){display.setText(“0”);isFirstDigit = true;operator = “=”;}double number = 0.0;String operator = “=”;public void handleOperator(String key){if(operator.equals(“+”))number += Double.valueOf(display.getText());else if(operator.equals(“-”))number-= Double.valueOf(display.getText());else if(operator.equals(“*”))number *= Double.valueOf(display.getText());else if(operator.equals(“/”))number /= Double.valueOf(display.getText());else if(operator.equals(“=”))number = Double.valueOf(display.getText());display.setText(String.valueOf(number));operator = key;isFirstDigit = true;}public static void main(String[] args){new JCalculator();} }2、运行结果,见截图计算测试:123+456=579结果正确,程序无误。

基于java的简易计算器的设计

基于java的简易计算器的设计摘要自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了C语言中指针特点,因而变得简单了很多。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,其具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

本文介绍了用java语言编写一个简易计算器。

实现数学上的加、减、乘、除、乘方、开方、阶乘、正弦、余弦运算等相关运算。

利用这个程序可以方便的进行日常性的小规模运算,小巧简易,是个实用的工具。

关键词:程序设计;简易计算器;java语言THE DESIGN OF SIMPLE CALCULATOR BASED ON JA V AABSTRACTSince the inception of the java language, java language Take irresistible trend soon beca me widespread international popular object-oriented programming language, both with advan ced language features, and less of the C language pointer characteristics, and thus becomes a l ot simpler . Java is a cross-platform application software can write object-oriented programmi ng language, which has excellent versatility, efficiency, platform portability, and security, are widely used in personal PC, data center, gaming consoles, scientific super-computers, mobile phones and the Internet, also has the world's largest developer of professional community. In t he global cloud computing and mobile Internet industry environment, Java and more have sig nificant advantages and broad prospects.This article describes the use java language a simple calculator. Achieve mathematical addition, subtraction, multiplication, division, involution, evolution, factorial, sine, cosine op erations and other related operations. With this program you can easily carry out daily operati ons of small-scale, small simple, is a useful tool.Key words:program design;simple calculator;java language目录1前言 (1)1.1 课程设计背景 (1)1.2 需求环境 (1)1.3 课程设计思路 (1)2课程设计概要 (2)3 计算器详细设计 (3)3.1 计算器界面……….………….........………………………………………. .33.1.1 CAL主类的显示分布 (3)3.1.2计算器显示界面实现代码 (3)3.2 监听各个按钮的类 (5)3.2.1 编写监听类目的 (5)3.2.2 监听类实现代码 (5)3.3 按键响应类 (7)3.3.1 响应类编写的目的 (7)3.2.2 响应类实现代码 (7)3.3 运算处理类 (9)3.3.1 处理方式 . (9)3.2.2 处理类实现代码 (9)4 运行与调试 (12)4.1 进入程序主界面 (12)4.2 加减乘除功能实现 (12)4.3 正余弦、正切功能实现 (13)4.4 阶乘功能实现 (13)4.5 乘方、开方功能实现 (14)5 实验总结 (15)参考文献 (16)附录:源代码 (17)1 前言1.1 课程设计背景日常生活中我们经常会遇到一些小型数据计算的问题,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。

Java简易计算器

简易计算器总结1、计算器设计背景日常生活中我们经常会遇到一些小型数据计算的问题,本课程就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。

在java语言当中通过定义类,类中的各种方法实现对计算器相关功能的实现,并通过与用户自己手动输入并选择运算功能实现计算功能,是一个完全由用户控制的简易计算器。

2、需求环境硬件要求:一台计算机。

软件配置:WINDOWS系统、JDK 1.7、myeclipse3、计算器设计思路计算器最主要的就是实用性,要简单,便于操作。

程序界面是一个窗口的形式展现并由用户自己完全手动控制。

并以设计的要求为基础,在实现课程设计所给的功能以外,要对界面的美观进行了优化,看起来更人性化。

4、计算器实现代码package com.cqeec.sc;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import javax.swing.BorderFactory;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.BevelBorder;public class Calculator extends JFrame {private static final long serialVersionUID = 1L;// 定义一级菜单名称private final String[] ONE_MENU_NAME = { "编辑(E)", "查看(V)", "帮助(H)" };// 定义一级菜单的热键private final int[] ONE_MENU_MNEMONIC = { KeyEvent.VK_E, KeyEvent.VK_V, KeyEvent.VK_H };// 定义菜单private JMenu[] oneMenu;// 定义显示器private JTextField display;// 定义左边面板MC、MR、MS、M+操作按钮标签private static final String[] BUTTON_MX_NAME = { "MC", "MR", "MS", "M+" };// 定义左边面板MC、MR、MS、M+操作按钮private JButton[] buttonMX;// 定义清除系列按钮标签private static final String[] BUTTON_CLEAR_NAME = { "Backspace", "CE", "C" };// 定义清除系统按钮private JButton[] buttonClear;// 定义数字,运算符,功能等按钮private static final String[] BUTTON_AN_NAME = { "1/x", "log", "7", "8", "9", "÷", "n!", "sqrt", "4", "5", "6", "×", "sin", "x^2", "1", "2","3", "-", "cos", "x^3", "0", "±", ".", "+", "tan", "%", "π", "e","\' \"", "=" };private JButton[] buttonAN;// M的值private double m;// 计算器标签,同时也用于显示M变量的值private JLabel labelCalculator;// 结果private double result;// 标志量,true表示开始新的输入,false表示不是private boolean isStratNewInput;// 保存运算符private String operator = "=";public Calculator() {this.setFrame();// 创建菜单this.createMenu();}private void setFrame() {// 设置窗体标题this.setTitle("计算器");// 改变大小this.setSize(500, 400);// 使窗体居于屏幕中间this.setLocationRelativeTo(null);// 设置窗体的默认关闭操作this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 让窗体不能改变大小this.setResizable(false);// 更改窗体的图标this.setIconImage(new ImageIcon("images/jisuanqi.jpg").getImage());}private void createMenu() {JMenuBar menuBar = new JMenuBar();// 创建菜单oneMenu = new JMenu[ONE_MENU_NAME.length];// 通过循环将一级菜单创建出来并添加到菜单栏for (int i = 0; i < ONE_MENU_NAME.length; i++) {// 创建一级菜单并保存到数组oneMenu[i] = new JMenu(ONE_MENU_NAME[i]);// 设置一级菜单栏热键oneMenu[i].setMnemonic(ONE_MENU_MNEMONIC[i]);// 将一级菜单添加到菜单栏menuBar.add(oneMenu[i]);}// 将菜单栏添加到窗体this.setJMenuBar(menuBar);// 获取窗体的内容面板的布局管理器BorderLayout layout = (BorderLayout) this.getContentPane().getLayout();// 设置垂直间距layout.setVgap(5);// 创建显示器display = new JTextField("0");display.setHorizontalAlignment(JTextField.RIGHT);// 设置字体大小display.setFont(new Font("", Font.ITALIC, 38));// 设置禁用显示器display.setEnabled(false);// 设置显示器与文本距离display.setMargin(new Insets(5, 0, 5, 5));// 设置显示器位置this.add(display, BorderLayout.NORTH);// 创建左边面板JPanel leftPanel = new JPanel(new GridLayout(5, 1, 0, 5)); // 设置面板的宽度leftPanel.setPreferredSize(new Dimension(80, 80));// 创建计算器标签labelCalculator = new JLabel("计算器");// 设置标签文字居中对齐labelCalculator.setHorizontalAlignment(JLabel.CENTER);// 设置计算器标签凹下去的效果labelCalculator.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));// 将计算器面板添加到左面板上leftPanel.add(labelCalculator);MAction mAction = new MAction();// 创建M系列按钮// 分配M系列按钮数组大小buttonMX = new JButton[BUTTON_MX_NAME.length];// 循环创建M系列按钮for (int n = 0; n < BUTTON_MX_NAME.length; n++) { // 创建按钮并存入数组中buttonMX[n] = new JButton(BUTTON_MX_NAME[n]);// 设置按钮不要焦点框buttonMX[n].setFocusable(false);// 设置按钮前景色buttonMX[n].setForeground(Color.red);// 设置按钮动作命令buttonMX[n].setActionCommand(BUTTON_MX_NAME[n]);buttonMX[n].addActionListener(mAction);// 添加按钮动作监听buttonMX[n].addActionListener(mAction);if (n == 0 || n == 1) {buttonMX[n].setEnabled(false);}// 将按钮添加到左面板上leftPanel.add(buttonMX[n]);}// 将左面板添加到窗体的左边this.add(leftPanel, BorderLayout.WEST);// 定义右面板JPanel rightPanel = new JPanel(new BorderLayout(0, 5));// 定义Backspace、CE、C按钮Clear clearProcess = new Clear();JPanel topPanel = new JPanel(new GridLayout(1, 3, 6, 0)); topPanel.setPreferredSize(new Dimension(0, 40));buttonClear = new JButton[BUTTON_CLEAR_NAME.length];for (int i = 0; i < BUTTON_CLEAR_NAME.length; i++) { buttonClear[i] = new JButton(BUTTON_CLEAR_NAME[i]);buttonClear[i].setFocusable(false);buttonClear[i].setForeground(Color.BLACK);buttonClear[i].setActionCommand(BUTTON_CLEAR_NAME[i]);buttonClear[i].addActionListener(clearProcess);topPanel.add(buttonClear[i]);}// 将Backspace、CE、C按钮面板放到右面板北边rightPanel.add(topPanel, BorderLayout.NORTH);// 定义数字按钮事件处理程序类对象NumAction numAction = new NumAction();SignAction signAction = new SignAction();// 定义数字、运算符、功能等按钮JPanel bottomPanel = new JPanel(new GridLayout(5, 6, 8, 8)); buttonAN = new JButton[BUTTON_AN_NAME.length];for (int i = 0; i < BUTTON_AN_NAME.length; i++) { buttonAN[i] = new JButton(BUTTON_AN_NAME[i]);buttonAN[i].setFocusable(false);// 设置按钮动作命令buttonAN[i].setActionCommand(BUTTON_AN_NAME[i]);// 为数字按钮添加监听if ("0123456789±".contains(BUTTON_AN_NAME[i])) {buttonAN[i].addActionListener(numAction);}if (".".equals(BUTTON_AN_NAME[i])) {buttonAN[i].addActionListener(new DotAction());}// 定义按钮文字颜色if ("÷×-+=".indexOf(BUTTON_AN_NAME[i]) >= 0) {buttonAN[i].setForeground(Color.RED);buttonAN[i].addActionListener(signAction);} else if ("πe\' \"".indexOf(BUTTON_AN_NAME[i]) >= 0) {buttonAN[i].setForeground(Color.YELLOW);buttonAN[i].addActionListener(signAction);} else if ("0123456789±.".indexOf(BUTTON_AN_NAME[i]) >= 0) { buttonAN[i].setForeground(Color.BLUE);buttonAN[i].setActionCommand(BUTTON_AN_NAME[i]);buttonAN[i].addActionListener(signAction);} else {buttonAN[i].setForeground(Color.MAGENTA);buttonAN[i].setActionCommand(BUTTON_AN_NAME[i]);buttonAN[i].addActionListener(signAction);}bottomPanel.add(buttonAN[i]);// 将数字、运算符、功能等按钮面板放到右面板的中间rightPanel.add(bottomPanel, BorderLayout.CENTER);// 将右面板添加到窗体this.add(rightPanel, BorderLayout.CENTER);// 显示窗体this.setVisible(true);}}/** 数字、±(正负号)按钮事件处理程序类*/class NumAction implements ActionListener {public void actionPerformed(ActionEvent e) {// 获取事件源对象传过来的动作命令String cmd = e.getActionCommand();if (isStratNewInput) {display.setText("");isStratNewInput = false;}if ("±".equals(cmd)) {// 正负号if ("0".equals(display.getText())) {display.setText("-");} else {double num;String strNum = display.getText();if (strNum.contains(".")) {num = Double.parseDouble(strNum) * -1;strNum = String.valueOf(num);} else {num = Double.parseDouble(strNum) * -1;strNum = String.valueOf(num);if (strNum.contains("E")) {} else {strNum = strNum.substring(0, strNum.length() - 2);}}display.setText(strNum);}} else {// 数字if ("0".equals(display.getText())) {display.setText("");}display.setText(display.getText() + cmd);}}}/*** 小数点按钮事件处理程序*/class DotAction implements ActionListener {public void actionPerformed(ActionEvent e) {if (!display.getText().contains(".")) {display.setText(display.getText() + ".");}}}/*** Backspace、CE、C按钮事件处理程序类*/class Clear implements ActionListener {public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();if ("Backspace".equals(cmd)) {// 删除一个String strNum = display.getText();if (strNum.length() == 0 || "0".equals(strNum)) {strNum = "0";} else {strNum = strNum.substring(0, strNum.length() - 1);strNum = "".equals(strNum) ? "0" : strNum;}display.setText(strNum);} else if ("CE".equals(cmd)) {// 清除显示器上的数字,显示零display.setText("0");} else if ("C".equals(cmd)) {// 清除M存储的值和显示器上的数字,显示零display.setText("0");labelCalculator.setText("计算器");m = 0;result = 0;isStratNewInput = false;}}}/*** MC、MR、MS、M+按钮事件处理程序类*/class MAction implements ActionListener {public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();if ("MC".equals(cmd)) {labelCalculator.setText("计算器");m = 0;buttonMX[0].setEnabled(false);buttonMX[1].setEnabled(false);} else if ("MR".equals(cmd)) {String strM = String.valueOf(m);if (strM.charAt(strM.length() - 1) == '0') {strM = strM.substring(0, strM.length() - 2);}display.setText(strM);} else if ("MS".equals(cmd)) {String strNum = display.getText();m = Double.parseDouble(strNum);strNum = String.valueOf(m);if (strNum.charAt(strNum.length() - 1) == '0') {strNum = strNum.substring(0, strNum.length() - 2);}labelCalculator.setText(String.valueOf(m));buttonMX[0].setEnabled(true);buttonMX[1].setEnabled(true);} else if ("M+".equals(cmd)) {m = m + m;labelCalculator.setText(String.valueOf(m));buttonMX[0].setEnabled(true);buttonMX[1].setEnabled(true);}}}class SignAction implements ActionListener {public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();double num = Double.parseDouble(display.getText());if ("1/x".equals(cmd)) {if (num == 0) {// 弹出提示JOptionPane.showMessageDialog(null,"<html>分母<span style=\"color:red;\">不能</span>为零!</html>","错误", JOptionPane.ERROR_MESSAGE);} else {display.setText(String.valueOf(1 / num));}} else if ("log".equals(cmd)) {if (num <= 0) {// 弹出提示JOptionPane.showMessageDialog(null, "输入的指数必须大于零", "错误",JOptionPane.ERROR_MESSAGE);} else {display.setText(String.valueOf(Math.log(num)));}} else if ("n!".equals(cmd)) {if (num < 0) {JOptionPane.showMessageDialog(null, "计算阶乘的数不能小于零", "错误",JOptionPane.ERROR_MESSAGE);} else {double s = 1;for (int i = 1; i < num; i++) {s *= i;}display.setText(String.valueOf(s));}} else if ("sqrt".equals(cmd)) {if (num <= 0) {// 弹出提示JOptionPane.showMessageDialog(null, "输入的数必须大于零", "错误",JOptionPane.ERROR_MESSAGE);} else {display.setText(String.valueOf(Math.sqrt(num)));}} else if ("sin".equals(cmd)) {display.setText(String.valueOf(Math.sin(num)));} else if ("x^2".equals(cmd)) {display.setText(String.valueOf(Math.pow(num, 2)));} else if ("cos".equals(cmd)) {display.setText(String.valueOf(Math.cos(num)));} else if ("x^3".equals(cmd)) {display.setText(String.valueOf(Math.pow(num, 3)));} else if ("tan".equals(cmd)) {display.setText(String.valueOf(Math.tan(num)));} else if ("%".equals(cmd)) {num = num / 100;display.setText(String.valueOf(num));} else if ("π".equals(cmd)) {display.setText(String.valueOf(Math.PI));} else if ("e".equals(cmd)) {String strNum = display.getText();if (strNum.contains(".")) {String strZS;// 小数strNum = String.valueOf(Double.parseDouble(strNum));if (strNum.contains("E")) {display.setText(strNum.replace('E', 'e'));} else {// 取整数部分strZS = strNum.substring(0, strNum.indexOf("."));// 判断小数的整数部分长度是否大于1strZS = String.valueOf(Math.abs(Long.parseLong(strZS)));if (strZS.length() > 1) {// 左移小数点strZS = strZS.substring(0, 1)+ "."+ strZS.substring(1, strZS.length())+ strNum.substring(strNum.indexOf(".") + 1,strNum.length()) + "e+"+ (strZS.length() - 1);if (strNum.contains("-")) {strZS = "-" + strZS;}display.setText(strZS);} else {if ("0".equals(strZS) || "-0".equals(strZS)) {// 取出小数部分String strXS = strNum.substring(strNum.indexOf(".") + 1,strNum.length());// 统计小数点后零的个数+1(次方数)int count = 0;for (int i = 0; strXS.charAt(i) == '0'; i++) {count++;}count = count + 1;// 取出底数strXS = String.valueOf(Long.parseLong(strXS));strXS = strXS.substring(0, 1) + "."+ strXS.substring(1, strXS.length());// 连接strNum = strXS + "e-" + count;} else {// 不动strNum = strNum + "e+0";}display.setText(strNum);}}} else {// 不是小数double ds;if (strNum.contains("-")) {ds = Double.parseDouble(strNum.substring(0, 2) + "."+ strNum.substring(2, strNum.length()));} else {ds = Double.parseDouble(strNum.substring(0, 1) + "."+ strNum.substring(1, strNum.length()));}strNum = String.valueOf(ds) + "e+" + (strNum.length() - 1);display.setText(strNum);}} else if ("\' \"".equals(cmd)) {} else if ("÷".equals(cmd)) {calculate(cmd);} else if ("×".equals(cmd)) {calculate(cmd);} else if ("+".equals(cmd)) {calculate(cmd);} else if ("-".equals(cmd)) {calculate(cmd);} else if ("=".equals(cmd)) {calculate(cmd);}}public void calculate(String opr) {// 取当前显示器上的数double n = Double.parseDouble(display.getText());// 根据上一次的运算符进行计算if ("÷".equals(operator)) {result /= n;// result=result/n;} else if ("×".equals(operator)) {result *= n;} else if ("+".equals(operator)) {result += n;} else if ("-".equals(operator)) {result -= n;} else if ("=".equals(operator)) {result = n;}// 将计算的结果显示到显示器上display.setText(String.valueOf(result));// 将新输入的运算符存入到原operator = opr;// 开启一个新数的输入isStratNewInput = true;}}}5、计算器实现实例6、计算器设计总结虽然在这次的课程设计中有很多的不足,但是我也收获了很多。

用Java实现的计算器

用Java实现的计算器计算器是一个广泛应用的工具,用于进行数学运算。

如今,随着计算机技术的不断发展,计算器也逐渐被软件程序所替代。

本文将介绍如何使用Java语言实现一个简单的计算器程序。

一、程序概述计算器程序主要包括用户界面和计算逻辑两部分。

用户界面负责显示计算器的按钮和输入输出框,计算逻辑负责根据用户输入进行运算并返回结果。

二、用户界面设计在Java中,我们可以使用Swing或JavaFX等图形库来设计用户界面。

本文选用JavaFX来实现计算器的界面。

界面需要包括数字按钮、运算符按钮、输入输出框等组件。

在程序启动时,我们需要初始化界面并设置各个组件的位置、大小和样式。

为了方便布局,我们可以使用GridPane等布局管理器来管理组件。

三、计算逻辑实现1. 表达式解析计算器需要将用户输入的表达式解析为计算机可以识别的格式。

Java中可以使用正则表达式或者逆波兰表达式来解析表达式。

本文选用简单的正则表达式方法进行解析。

2. 运算逻辑解析表达式后,我们需要根据运算符的优先级进行运算。

Java中可以使用栈来实现运算符的优先级判断和运算。

我们可以定义一个操作数栈和一个运算符栈,按照规则将表达式中的数字和运算符依次入栈,并根据运算符的优先级进行运算并将结果入栈。

四、完整代码示例import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import yout.GridPane;import javafx.stage.Stage;public class Calculator extends Application {private TextField inputField; // 输入框private Button[] numberButtons; // 数字按钮private Button[] operatorButtons; // 运算符按钮@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("计算器");primaryStage.setResizable(false);// 初始化界面GridPane gridPane = new GridPane();gridPane.setHgap(10);gridPane.setVgap(10);gridPane.setPadding(new Insets(10));// 初始化输入框inputField = new TextField();inputField.setEditable(false);inputField.setPrefHeight(40);inputField.setMaxWidth(Double.MAX_VALUE);gridPane.add(inputField, 0, 0, 4, 1);// 初始化数字按钮numberButtons = new Button[10];for (int i = 0; i < 10; i++) {numberButtons[i] = createNumberButton(String.valueOf(i), i); }gridPane.add(numberButtons[7], 0, 1);gridPane.add(numberButtons[9], 2, 1);gridPane.add(numberButtons[4], 0, 2);gridPane.add(numberButtons[5], 1, 2);gridPane.add(numberButtons[6], 2, 2);gridPane.add(numberButtons[1], 0, 3);gridPane.add(numberButtons[2], 1, 3);gridPane.add(numberButtons[3], 2, 3);gridPane.add(numberButtons[0], 0, 4);gridPane.add(createDotButton(), 1, 4);gridPane.add(createEqualButton(), 2, 4);// 初始化运算符按钮operatorButtons = new Button[4];operatorButtons[0] = createOperatorButton("+"); operatorButtons[1] = createOperatorButton("-"); operatorButtons[2] = createOperatorButton("*"); operatorButtons[3] = createOperatorButton("/"); gridPane.add(operatorButtons[0], 3, 1);gridPane.add(operatorButtons[1], 3, 2);gridPane.add(operatorButtons[3], 3, 4);Scene scene = new Scene(gridPane);primaryStage.setScene(scene);primaryStage.show();}private Button createNumberButton(String text, int number) { Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + number);});return button;}private Button createDotButton() {Button button = new Button(".");button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + ".");});return button;}private Button createEqualButton() {Button button = new Button("=");button.setPrefSize(60, 40);button.setOnAction(e -> {String expression = inputField.getText();// 调用计算逻辑进行计算if (expression != null && !expression.isEmpty()) { double result = calculate(expression);inputField.setText(String.valueOf(result));}});return button;}private Button createOperatorButton(String text) {Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + text);});return button;}private double calculate(String expression) {// 进行计算逻辑的实现// ...}public static void main(String[] args) {launch(args);}}五、总结通过本文的介绍,我们可以了解到使用Java语言实现一个简单计算器的基本框架和思路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java计算器的设计思路
我们需要设计一个用户界面,以便用户可以方便地输入算术表达式。

在Java中,我们可以使用图形用户界面(GUI)库,如Swing或JavaFX,来创建计算器的界面。

界面应该包含数字按钮、运算符按钮和其他功能按钮(如清除、等于和删除按钮)。

这些按钮应该被布局和组织在一个合适的方式,以便用户可以轻松地使用它们。

接下来,我们需要处理用户输入。

当用户点击数字按钮时,我们应该能够捕获并显示该数字。

我们可以使用事件处理机制来实现这一点,当用户点击按钮时,触发相应的事件处理方法。

在这些方法中,我们可以将数字添加到一个字符串变量中,以便最终构建用户输入的算术表达式。

除了数字按钮,我们还需要处理运算符按钮。

当用户点击运算符按钮时,我们应该能够捕获并显示该运算符。

类似地,我们可以使用事件处理机制来实现这一点,并将运算符添加到算术表达式字符串中。

在处理用户输入之后,我们需要实现计算逻辑。

我们可以使用Java 的数学库函数来执行基本的算术运算,如加法、减法、乘法和除法。

我们可以根据用户输入的算术表达式来调用适当的函数,并将结果显示给用户。

我们还可以添加其他功能,如清除按钮,用于清除用户输入的算术表达式。

我们可以通过将算术表达式字符串重置为空字符串来实现这一点。

还可以添加删除按钮,用于删除用户输入的最后一个字符。

在实现计算器的设计思路时,我们还应该考虑错误处理。

例如,当用户输入无效的算术表达式时,我们应该能够捕获并显示错误消息。

我们可以使用异常处理机制来实现这一点,捕获可能发生的异常并显示适当的错误消息给用户。

除了基本的计算功能,我们还可以扩展计算器的功能。

例如,我们可以添加科学计算功能,如三角函数、指数函数和对数函数。

我们可以在界面上添加相应的按钮,并在计算逻辑中调用适当的数学库函数。

总结起来,设计一个Java计算器需要考虑界面设计、用户输入处理和计算逻辑的实现。

我们可以使用Java的GUI库来创建计算器的界面,并使用事件处理机制来处理用户输入。

计算逻辑可以使用Java的数学库函数来执行基本的算术运算。

在实现过程中,我们还应该考虑错误处理和其他功能的添加。

通过合理的设计和实现,我们可以创建一个功能完善的Java计算器应用程序。

相关文档
最新文档