JAVA计算器实验报告
java简易计算器实训报告(一)

java简易计算器实训报告(一)Java简易计算器实训报告实训目的通过编写一个简易的Java计算器,深入了解Java基础语法,并掌握对象的属性和行为。
实训过程本次实训采用Eclipse编写Java程序,具体过程如下:1.首先创建一个名为“Calaulator”的Java项目,再在其中创建一个名为“Calaulator”的类。
2.在Calaulator类中定义一个名为“calculate”的方法,此方法接收3个参数:一个char类型的操作符,两个double类型的操作数,返回值为double类型。
3.在方法体中根据传入的操作符进行相应的加、减、乘、除运算。
4.创建一个主函数,在其中调用calculate方法并输出结果。
实训收获通过本次实训,我掌握了Java的基础语法,并深入了解了对象的属性和行为。
同时,我还学会了如何使用Eclipse编写Java程序,提高了自己的编程水平。
实训总结Java语言作为一种强大而稳定的编程语言,具有广泛的应用场景。
通过本次实训,我深刻认识到Java的重要性,并希望能够在以后的学习中不断探索Java语言的更多使用方法。
实训反思在实训过程中,我发现自己对Java的基础语法了解不够深入,导致编写代码时遇到一些困难,需要不断查阅相关资料。
同时,在调试代码时也遇到了许多问题,发现自己对IDE的使用不够熟练,需要更多的实践和学习。
实训展望通过本次实训,我已经初步掌握了Java的基础语法和编程思想,但我认为这只是一个开始。
我需要不断地练习,深入了解Java的各种特性,将其应用到实际开发中。
未来,我希望能够成为一名优秀的Java工程师,为社会做出自己的贡献。
结语本次Java简易计算器实训让我收获颇丰,不仅加深了对Java的认识,也增强了自己的编程实践能力。
希望今后能够在Java的学习和实践中不断提高自己,取得更好的成果。
java计算器实验报告

Java计算器实验报告计算机032胡勇健030952182005年5月5日目录1.设计名称与要求2.各模块功能的介绍和实现3.系统的特色和不足4.参考书一. 实验名称及其要求:A)名称: java计算器的设计B)要求:1.实验目的:图形界面设计。
熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。
2.题意:请设计并实现Windows系统中“计算器”的窗口及功能。
3.实验要求:(1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。
(2)运算:实现多种运算,保证运算正确性。
二.各模块功能的介绍和实现:A)GUI图形界面的组件:a)所用到的Java类库包:java.awt.*; 基本的图形界面组件来源于awt包。
java.awt.event.*; 事件的属性处理来源于awt.event包。
javax.swing.*; swing组件增加了awt包中所不具备的各种优越功能。
java.awt.datatransfer.*; 用于计算器与外部的程序进行复制粘贴。
b)所用的各部分图形组件的定义:Frame mainFrame; //主框架JTextField answerText; //显示计算结果JTextField memoryState; //显示计算器内存的使用情况MenuBar menuGroup; //菜单栏Menu editMenu,viewMenu,helpMenu; //编辑,查看,帮助菜单MenuItem copyItem,pasteItem; //复制,粘贴MenuItem standardModel; //标准型CheckboxMenuItem numGroup; //数字分组MenuItem aboutCal; //关于计算器Button buttonBackSpace,buttonCE,buttonC; //退格,清除,清空按钮Button buttonMC,buttonMR,buttonMS,buttonMADD; //内存操作按钮Button buttonNum[]; //数字按钮Button buttonAdd,buttonSub,buttonMul,buttonDiv; //+,-,*,/Button buttonDot,buttonSign,buttonEqual; //. +/- =Button buttonSqrt,buttonMod,buttonReciprocal; //sqrt % 1/xc)组件的初始化以及对界面的排版对主框架的初始化操作void initMainFrame()函数是对主框架进行初始化,设置其框架大小270*250,初始位置270*250,背景颜色Color.lightGray,是否显示true,能否改变窗口大小false,以及增加了addWindowListener委托事件,当关闭窗口时调用System.exit(0) 系统指令,结束程序。
java 计算器实验报告

java 计算器实验报告Java计算器实验报告一、引言计算器是我们日常生活和学习中经常使用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算效率。
在本实验中,我们将使用Java编程语言设计并实现一个简单的计算器。
二、实验目的1. 学习Java编程语言的基本语法和数据类型;2. 掌握Java图形用户界面(GUI)的设计和实现;3. 熟悉计算器的基本功能和运算规则。
三、实验步骤1. 界面设计在Java中,我们可以使用Swing库来设计和实现GUI界面。
首先,我们创建一个窗口对象,并设置窗口的标题、大小和布局。
然后,我们在窗口中添加文本框和按钮,用于显示计算结果和接收用户输入。
2. 功能实现计算器的基本功能包括加法、减法、乘法和除法运算。
我们可以通过监听按钮点击事件,获取用户输入的数字和操作符,然后进行相应的运算,并将结果显示在文本框中。
3. 异常处理在进行计算过程中,可能会出现一些异常情况,例如除数为零或输入非法字符等。
为了保证程序的健壮性,我们需要对这些异常进行处理,并给出相应的提示信息。
4. 测试和优化完成代码编写后,我们需要进行测试和优化。
通过输入一系列测试用例,检查计算器是否能够正确处理各种情况,并对可能存在的bug进行修复和优化。
四、实验结果经过多次测试和优化,我们的计算器程序已经能够正确地进行加减乘除运算,并能够处理各种异常情况。
用户友好的界面设计和清晰的提示信息,使得计算器易于使用和操作。
五、实验总结通过本次实验,我学习了Java编程语言的基本语法和数据类型,并且掌握了Java图形用户界面(GUI)的设计和实现方法。
通过实践,我深入理解了计算器的基本功能和运算规则,并学会了如何处理异常情况。
此外,我还培养了代码编写、测试和优化的能力,提高了自己的编程水平。
六、实验感想本次实验让我更加熟悉了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简易计算器实训报告Java简易计算器实训报告随着人们对数学和计算机的需求不断增长,计算器也成为了必备的工具之一。
而在计算机领域,Java语言因其跨平台和易于学习的特点而备受青睐。
因此,我选择了利用Java语言来编写一款简易计算器的实训项目。
一、需求分析在编写计算器之前,我们需要对其功能进行需求分析。
一般来说,计算器的功能包括加、减、乘、除等基本数学运算符,以及括号、百分号、小数点等其他计算功能。
在此基础上,我们可以考虑增加科学计算、历史记录、单位转换等功能。
二、设计思路及实现在需求分析的基础上,我们设计了一款基于Java语言的简易计算器。
其基本功能包括加、减、乘、除、括号、百分号、小数点等。
在实现过程中,我们采用了以下设计思路:1. 利用Java Swing构建GUI界面,让用户可以通过鼠标点击输入数字和运算符。
2. 通过Java的逻辑运算符实现基本的数学运算,包括加、减、乘、除等。
3. 利用Java的正则表达式判断用户输入的数字是否合法,并进行相应的处理。
4. 通过栈的数据结构实现括号运算,使得程序能够正确处理带有括号的数学表达式。
5. 实现百分号功能,使得用户可以快速进行百分比运算。
6. 通过Java的异常处理机制,处理用户输入不合法的情况,避免程序崩溃。
三、代码实现在代码实现过程中,我们主要采用了Java Swing和Java核心库中的一些类和方法。
以下是代码的核心部分:1. GUI界面代码在Java Swing中,我们可以通过JFrame、JPanel、JButton等组件构建出一个GUI界面,使得用户可以通过鼠标点击输入数字和运算符。
以下是界面代码的核心部分:JPanel panel = new JPanel();panel.setLayout(new GridLayout(4,4));//数字按钮panel.add(new JButton("7"));panel.add(new JButton("8"));panel.add(new JButton("9"));panel.add(new JButton("/"));panel.add(new JButton("4"));panel.add(new JButton("5"));panel.add(new JButton("6"));panel.add(new JButton("*"));panel.add(new JButton("1"));panel.add(new JButton("2"));panel.add(new JButton("3"));panel.add(new JButton("-"));panel.add(new JButton("0"));panel.add(new JButton("."));panel.add(new JButton("+"));panel.add(new JButton("("));panel.add(new JButton(")"));panel.add(new JButton("%"));2. 数学运算代码在Java中,我们可以通过逻辑运算符实现基本的数学运算。
java计算器实验报告

课程设计论文设计题目:java计算器学生姓名:指导教师:专业名称:所在院系:摘要在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。
Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。
该程序是一个图形界面的java 计算器,其界面主要采用了swing包,程序实现了:(1)实现简单加、减、乘、除的运算。
(2)实现除了加、减、乘、除按钮外其他按钮功能。
(3)给软件添加一个编辑、查看、帮助的主菜单。
(4)在数据输入方面,提高程序代码的健壮性,增强其对非法输入数据的识别能力。
(5)科学型计算器与标准计算器之间的菜单切换。
Java的早期版本以来,抽象窗口工具包为用户界面组件提供了平台独立的API。
在AWT中,每个组件都由一个原生的等同组件生成和控制,这个原生组件是由当前的图形窗口系统决定的。
与此相对,Swing 组件经常被描述为轻量级的,因为它们不需要操作系统本身所带窗口工具包的原生资源来生成。
目录第1章概要设计 (1)1.1查找资料 (1)1.2选题 (1)1.3标准型计算器界面设计 (1)1.4本章小节 (3)第2章程序整体设计说明 (4)2.1程序中所用到的变量 (4)2.2程序部分源代码及注释 (4)2.3本章小节 (15)第3章程序运行效果 (16)3.1程序运行主界面 (16)3.2程序中各按钮运行界面 (16)3.3本章小节 (20)第4章设计中遇到的重点及难点 (21)4.1设计中遇到的重点 (21)4.2设计中的遇到的难点 (21)4.3本章小节 (23)第5章本次设计中存在不足与改良方案 (24)5.1本次设计中存在的不足 (24)5.2本次设计的改良方案 (24)5.3本章小节 (24)结论 (25)参考文献 (26)致谢 (27)指导教师评语 (28)答辩委员会评语 (29)第1章概要设计1.1查找资料21世纪,随着社会经济的迅速发展和科学技术的全面进步,人类社会已进入信息和网络时代。
实验报告Java计算器

一、实验目的1.熟悉java图形用户界面的设计原理和程序结构。
2.能设计复合问题要求的图形用户界面程序。
3.熟悉java.awt和swing的组合。
4.掌握常用组件的事件接口。
5.会应用awt和swing组件进行应用程序设计。
二、实验内容设计一个计算器,计算器的界面大体是按照windowsXP上自带的微软的计算器的布局设计的。
主要功能包括:实现基本的加减乘除运算,并且能实现连续的运算,能显示运算数和运算结果。
还包括MC、MR 、MS、M+ 、Backspe、+/-、 C、CE、 % 、Sqrt 、1/x 键,能实现相应的功能。
三、整体设计与描述1.点击相应的按钮,输入运算数,显示框内能显示当前输入的数字2、在任何时候按下“+/-”键,计算器文本框上的数字置反号。
3、MC :Memory Clear 清除存储器中的数值4、MR :Memory Read 存储器读出5、MS :Memory Save 存入存储器6、M+ :Memory Plus 将数值与存储器中的数值相加7、M- :Memory Subtract 存储的数字减去显示栏中的数字8、C键为清除键(CLEAR的缩写)9、CE键为纠错键(CLEAR ERROR的缩写)10、Backspase 键为退格键,消去最低位。
11、sqrt是开方键,点击后显示开方后的结果。
12、按下a(运算)b后,不按等于,再按别的运算符,a和b的运算结果会作为第一个操作数再次参与运算。
13、按下“选项”键,点“退出”键退出14、点击帮助的“关于我们”,会弹出一个对话框,显示信息。
整体显示界面如下:四、算法分析与程序设计1、控件的布局界面布局分为三个面板panel1,panel2,panel3.第一个面板上存放数字输入框。
第二个存放存储器标志、回车键、CE、C键四个按钮。
第三个面板存放各个数字和剩下的运算符,布局为4*6的GridLabel。
为了使界面更美观,需要设置适当的行间距和列间距,以及适当的背景色。
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)||一、实验目的综合应用所学的知识分析问题、解决问题,提高实际编程能力及程序调试能力。
二、实验内容及要求用图形界面GUI编程,编写一个能够实现加减乘除的简单的计算器,要求使用监听类,还要能够连续加减,有清除功能,能够准确的计算出正确结果。
三、实验仪器与设备计算机,JDK,我用的是eclipse。
四、问题分析与系统设计问题分析:首先需要把图形界面设计出来,给组件注册监听器,转换事件信息,实现对数据的加、减、乘、除等计算器的基本的功能设计思想与设计结果:在主类Caculater中使用监听内部类 MyMonitor 对各个组件进行监听,在MyMonitor中对按键信息进行分类处理(数字,算术符号,功能键)。
数据成员主要有各个按钮以及计算器的各个状态(如初始状态等)。
成员函数有:1、对退格键的处理:backSpace() 2、对算是符号的处理:operater() 3、将数字字符串转换成数字:getDate()五、实验结果相反数、平方根等功能,能够将图形界面设计出来给注册监听器,实现界面与基本实现了简单的的加、减、乘、除以及倒数和取内部代码结合。
六、总结与体会1·我以前不清楚界面与内部代码是怎么连接的,现在知道了。
还学会简单的GUI编程,能够实现对界面进行布局2·跟c++有很大的不同,java多了许多的包,类呀,这样是编译快捷而且安全正确,学会使用了内部类,懂得了事件的响应以及如何处理事件。
3·锻炼了编程的逻辑思维,能够对数据进行逻辑的处理以及对整个程序的逻辑部署4·还知道了要想吧java学好是很难的,里面有许许多多的包,类。
要想好好运用java 就必须运用好java类包,java的简单编程只是基础,掌握系统提供的package和class 才是成为java厉害者的必经之路。
附件:源程序清单import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.List;public class Caculator extends Frame {List<String> list = new ArrayList<String>();public static int step = 0; // 处理刚开始第一次计算的时候dataResult为零的问题private String command[] = { "BackSpace", "CE", "C" };private String normal[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };private String special[] = { "", "MC", "MR", "MS", "M+" };private boolean firstInput = true;private boolean legal = true;private double dataResult = 0;private String s = null;private TextField tf = new TextField();private Button bn[] = new Button[normal.length]; private Button bc[] = new Button[command.length]; private Button bs[] = new Button[special.length]; private Mymonitor mn = new Mymonitor();public static void main(String[] args) {CouterClient cc = new CouterClient();unchFrame();}public void launchFrame() {this.setLocation(200, 250);this.setBackground(Color.blue);this.setTitle("计算器");this.setSize(300, 400);this.setResizable(false);this.setLayout(new BorderLayout(2, 2));this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);}});Panel pn = new Panel(new GridLayout(4, 5, 2, 2));for (int i = 0; i < normal.length; i++) {bn[i] = new Button(normal[i]);bn[i].addActionListener(mn);pn.add(bn[i]);}Panel pc = new Panel(new GridLayout(1, 3, 2, 2));for (int i = 0; i < command.length; i++) {bc[i] = new Button(command[i]);bc[i].addActionListener(mn);pc.add(bc[i]);}Panel ps = new Panel(new GridLayout(5, 1, 2, 2));for (int i = 0; i < special.length; i++) {bs[i] = new Button(special[i]);bs[i].addActionListener(mn);ps.add(bs[i]);}Panel p = new Panel(new BorderLayout(2, 2));p.add(BorderLayout.NORTH, pc);p.add(BorderLayout.CENTER, pn);tf.setEditable(false);tf.setBackground(Color.white);this.add(BorderLayout.CENTER, p);this.add(BorderLayout.WEST, ps);this.add(BorderLayout.NORTH, tf);tf.setText("0");this.setVisible(true);this.pack();}private class Mymonitor implements ActionListener {public void actionPerformed(ActionEvent e) {s = e.getActionCommand();if (s.equals(command[2])) { // 按下了 C 键时归零计算器回到最初的状态tf.setText("0");firstInput = true;legal = true;dataResult = 0;step = 0;} else if (s.equals(command[1])) { // 按下 CE 键时,显示零tf.setText("0");firstInput = true;} else if (s.equals(command[0])) { // 按下退格键时backSpace();} else if ("0123456789.".indexOf(s) >= 0) {if (firstInput) {tf.setText(s);}if (firstInput && s.equals(".")) {tf.setText("0.");firstInput = false;} else if (!firstInput) {if (s.equals(".")) {if (tf.getText().indexOf(".") <= 0) {tf.setText(tf.getText() + s);} else {String str = (tf.getText() + s).substring(0, tf.getText().length());tf.setText(str);}} else {tf.setText(tf.getText() + s);}} else if (firstInput && !s.equals(".")) {firstInput = false;}} else {operator(s);}}}public void operator(String key) {if (key != "=")list.add(key);if (key.equals("+")) {this.dataResult += getData();} else if (key.equals("-")) {if (step == 0) {this.dataResult = getData();step++;} else {this.dataResult -= getData();}} else if (key.equals("*")) {if (step == 0) {this.dataResult = getData();step++;} else {this.dataResult *= getData();}} else if (key.equals("/")) {if (step == 0) {this.dataResult = getData();step++;} else {if (getData() == 0) {tf.setText("除数不能是0!请按C键重新开始输入");this.legal = false;} else {this.dataResult /= getData();}}} else if (key.equals("+/-")) {this.dataResult = -1 * getData();} else if (key.equals("sqrt")) {if ((this.dataResult = getData()) > 0) {this.dataResult = Math.sqrt(this.dataResult);} else {tf.setText("负数没有平方根");}} else if (key.equals("1/x")) {this.dataResult = getData();if (this.dataResult == 0) {tf.setText("0没有倒数");} else {this.dataResult = 1 / this.dataResult;}} else if (key.equals("=") && this.legal) {this.operator(list.get(list.size() - 1));this.firstInput = true;step = 0;}if (legal) {long l = (long) this.dataResult;double d;d = this.dataResult - l;if (d == 0) {tf.setText("" + l);} else {tf.setText("" + this.dataResult);}this.firstInput = true;if (key == "=")this.dataResult = 0;}}public void backSpace() {if (firstInput) {tf.setText("0");firstInput = true;} else {if (tf.getText().length() >= 1) {String temp = tf.getText().substring(0,tf.getText().length() - 1);tf.setText(temp);if (tf.getText().length() == 0) {tf.setText("0");this.firstInput = true;}}}}public double getData() {double result = 0;try {result = Double.valueOf(tf.getText()).doubleValue();} catch (NumberFormatException e) {tf.setText("0");firstInput = true;legal = true;dataResult = 0;}return result;}}。
java计算器设计实验报告

java计算器设计实验报告Java计算器设计实验报告引言:计算器是人们日常生活中常见的工具之一,它能够进行基本的数学运算,方便人们进行快速计算。
本实验旨在通过使用Java编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。
一、实验目的本实验的主要目的是通过设计和实现一个基本的计算器,加深对Java编程语言的理解和应用。
通过这个实验,我们可以学习到如何设计一个简单的界面,实现基本的计算功能,并对用户输入进行处理和错误处理。
二、实验步骤1. 界面设计首先,我们需要设计一个简单的计算器界面。
可以使用Swing或JavaFX等工具包来实现界面设计。
界面应该包括数字按钮、运算符按钮以及一个显示屏幕等组件。
2. 事件处理接下来,我们需要为每个按钮添加事件处理程序。
当用户点击按钮时,程序应该能够根据按钮的类型执行相应的操作。
例如,当用户点击数字按钮时,程序应该能够将数字显示在屏幕上;当用户点击运算符按钮时,程序应该能够执行相应的运算。
3. 运算逻辑在实现运算逻辑时,我们需要考虑用户的输入和错误处理。
例如,当用户输入非法字符或进行非法操作时,程序应该能够给出相应的提示或错误信息。
同时,我们还需要考虑运算的优先级和顺序,确保计算结果的准确性。
4. 测试和调试完成代码编写后,我们需要进行测试和调试。
通过输入一系列数字和运算符,检查计算器是否能够正确计算并显示结果。
如果发现错误或异常,需要对代码进行调试,找出并解决问题。
三、实验结果经过测试和调试,我们成功实现了一个简单的计算器。
用户可以通过界面上的按钮输入数字和运算符,并在屏幕上显示计算结果。
计算器能够处理用户的输入并进行相应的运算,同时还能够对错误输入进行处理和提示。
四、实验总结通过本实验,我们深入了解了Java编程语言的应用和实践。
通过设计和实现一个简单的计算器,我们掌握了界面设计、事件处理和运算逻辑的基本原理和方法。
同时,我们也学会了如何进行测试和调试,提高了代码的可靠性和稳定性。
(完整word版)Java计算器实验报告

一、目标:通过Java程序开发实训使学生掌握《面向对象程序设计(Java)》课堂讲授的内容,灵活运用到Java程序的开发与设计中。
二、要求:按时参加Java程序开发实训训练,不得迟到和早退;独立完成程序设计;按要求撰写实践报告。
三、详细内容:使用《面向对象程序设计(Java)》课程讲授内容,编写一个简单的计算器,要求实现如下功能:1.进行图形界面设计通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。
2.实现计算器的基本功能包括加减乘除四则运算、倒数、平方根及清除结果等功能。
3.实现计算器的存储计算功能包括存储中间结果(MS)、使用中间结果(MR)、累加中间结果(M+)及清除中间结果(MC)的功能。
4.计算器的扩展功能包括乘方、对数、正弦、余弦、正切、余切、反正弦、反余弦、反正切、反余切及2进制、8进制、16进制、10进制之间的相互转换等功能.四、源代码import java。
awt.BorderLayout;import java.awt.Color;import java。
awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java。
awt.event.ActionListener;import java.awt。
event。
KeyEvent;import java.text.DecimalFormat;import javax。
swing.JButton;import javax.swing.JFrame;import javax。
swing.JLabel;import javax。
swing.JMenu;import javax.swing。
JMenuBar;import javax。
swing。
JMenuItem;import javax。
java编写的计算器设计报告

java编写的计算器设计报告实验7:综合实验二一、试验目的进一步掌握图形用户界面GUI,了解Swing组件的使用,以及系统提供的该工具的作用,进一步掌握JAVA事件响应机制的原理,更好的掌握面向对象编程的思路。
二、实验要求创建一个界面来实现一个简单的计算器,要求:1、实现最基本的计算器界面,包括:0~9的10个数字按钮,加、减、乘、除、等于5个运算符按钮,一个结果存放的文本区域。
2、实现最基本的加、减、乘、除运算,并能得到正确结果。
3、实现连续的运算,小数点的使用,并考虑各种可能导致异常的情况,将程序作完善;4、可以通过关闭按钮实现关闭窗口。
三、实验步骤、结果1、程序代码:import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent; importjava.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class ZhxCacu extends JFrame implements ActionListener { JPanel jpResult = new JPanel();JPanel jpButton = new JPanel();JTextField jtfResult = new JTextField("0");JButton zero = new JButton("0"); //数字键0JButton one = new JButton("1"); //数字键1JButton two = new JButton("2"); //数字键2JButton three = new JButton("3"); //数字键3JButton four = new JButton("4"); //数字键4JButton five = new JButton("5"); //数字键5JButton six = new JButton("6"); //数字键6JButton seven = new JButton("7"); //数字键7JButton eight = new JButton("8"); //数字键8JButton nine = new JButton("9"); // 数字键9JButton plus = new JButton("+");JButton sub = new JButton("-");JButton mul = new JButton("*");JButton div = new JButton("/");JButton equal = new JButton("=");JButton ce = new JButton("ce"); // 置零键JButton point = new JButton(".");JButton tzero = new JButton("00");//com代表敲击运算符,digit代表敲击数字键boolean com = false;boolean digit = false;float total=0;String sum="";int symbol=0;int b,c=0;public ZhxCacu(){// 添加结果输入框并设置对齐方式jpResult.setLayout(new BorderLayout());jpResult.add(jtfResult);jtfResult.setEditable(false);jtfResult.setHorizontalAlignment(SwingConstants.RIGHT); //将组件添加到窗体上this.add(jpResult,"North");this.add(jpButton,"Center");// 定义按钮区域布局管理器为网格布局jpButton.setLayout(new GridLayout(6, 3, 10, 10));// 添加各个按钮键jpButton.add(seven);jpButton.add(eight);jpButton.add(nine);jpButton.add(four);jpButton.add(five);jpButton.add(six);jpButton.add(one);jpButton.add(two);jpButton.add(three);jpButton.add(zero);jpButton.add(tzero);jpButton.add(plus);jpButton.add(sub);jpButton.add(mul);jpButton.add(div);jpButton.add(point);jpButton.add(equal);jpButton.add(ce);one.addActionListener(this);//对1按钮添加监听事件two.addActionListener(this);//对2按钮添加监听事件three.addActionListener(this);//对3按钮添加监听事件four.addActionListener(this);//对4按钮添加监听事件five.addActionListener(this);//对5按钮添加监听事件six.addActionListener(this);//对6按钮添加监听事件seven.addActionListener(this);//对7按钮添加监听事件eight.addActionListener(this);//对8按钮添加监听事件nine.addActionListener(this);//对9按钮添加监听事件zero.addActionListener(this);//对0按钮添加监听事件ce.addActionListener(this);//对置零按钮添加监听事件plus.addActionListener(this);//对+按钮添加监听事件equal.addActionListener(this);//对=按钮添加监听事件sub.addActionListener(this);//对-按钮添加监听事件mul.addActionListener(this);//对*按钮添加监听事件div.addActionListener(this);//对/按钮添加监听事件tzero.addActionListener(this);//对00按钮添加监听事件point.addActionListener(this);//对.按钮添加监听事件pack();//初始化窗体大小最合适大小this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});this.setSize(300,300);this.setVisible(true);}public static void main(String[] args) {// TODO 自动生成方法存根new ZhxCacu();}public void actionPerformed(ActionEvent e) {// TODO 自动生成方法存根//数字if(e.getSource()==one){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("1");com = false;digit = true;}else{sum = jtfResult.getText()+"1"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==three){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("3");com = false;digit = true;}else{sum = jtfResult.getText()+"3"; jtfResult.setText(sum);}}else if(e.getSource()==four){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("4");com = false;digit = true;}else{sum = jtfResult.getText()+"4"; jtfResult.setText(sum);}}else if(e.getSource()==five){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("5");com = false;digit = true;}else{sum = jtfResult.getText()+"5"; jtfResult.setText(sum);}}else if(e.getSource()==six){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("6");com = false;digit = true;}else{sum = jtfResult.getText()+"6"; jtfResult.setText(sum);}}else if(e.getSource()==seven){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("7");com = false;digit = true;}else{sum = jtfResult.getText()+"7";jtfResult.setText(sum);}}else if(e.getSource()==eight){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("8");com = false;digit = true;}else{sum = jtfResult.getText()+"8"; jtfResult.setText(sum);}}else if(e.getSource()==nine){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("9");com = false;digit = true;}else{sum = jtfResult.getText()+"9"; jtfResult.setText(sum);}}else if(e.getSource()==zero){if(com||digit==false){//第一次敲击数字按jtfResult.setText("0");com = false;digit = true;}else{sum = jtfResult.getText()+"0"; jtfResult.setText(sum);if(Float.parseFloat(sum)!=0){}else{if(b==1){sum = jtfResult.getText()+"0"; jtfResult.setText(sum);}elsejtfResult.setText("0");}}}else if(e.getSource()==tzero){if(com||digit==false){//第一次敲击数字按jtfResult.setText("00");com = false;digit = true;}else{sum = jtfResult.getText()+"00";jtfResult.setText(sum);}}else if(e.getSource()==point){if(com||digit==false){//第一次敲击数字按钮b=1;com = true;digit = false;}else if(c==1); else{b=1;sum = jtfResult.getText()+".";jtfResult.setText(sum);c=1;}}//运算else if(e.getSource()==plus){symbol = 1;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==sub){symbol = 2;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==mul){symbol = 3;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==div){symbol = 4;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==ce){com = true;digit = false;total=0;sum ="0" ;jtfResult.setText(sum);}//=else if(e.getSource()==equal){com = true;digit = false;switch(symbol){case 1:jtfResult.setText(newFloat(total+Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;b reak;case 2:jtfResult.setText(newFloat(total-Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;case 3:jtfResult.setText(newFloat(total*Float.parseFloat(jtfResult.getText())).toString());b=0;c =0;break;case 4:if( Float.parseFloat(jtfResult.getText())==0 ){try{throw new Exception();}catch(Exception a){jtfResult.setText("错误~被除数不能为0,请重新输入:");}}elsejtfResult.setText(newFloat(total/Float.parseFloat(jtfResult.getText())).toString());b=0;c =0;break;}digit=false;total = 0;}}}2、界面:四、实验中的问题以及解决方案:1、问题: 被除数为0解决:抛出异常2、问题: 阻止0、小数点在同一数字中重复出现解决: 设置标志,五、总结:1、进一步了解了项目开发的步骤,思路,以及程序的布局和框架结构,尤其是对JAVA的模块化设计有了更为深入的了解。
java 计算器实验报告

java 计算器实验报告Java计算器实验报告引言:计算器是我们日常生活中常用的工具,使用计算器可以快速进行数学运算。
在计算器中,我们可以通过输入数字和运算符来执行各种算术操作。
为了更好地理解计算器的工作原理,我们进行了Java计算器的实验。
一、实验目的本次实验的目的是设计和实现一个简单的Java计算器。
通过这个实验,我们可以加深对Java编程语言的理解,并且掌握Java图形用户界面(GUI)的基本知识。
二、实验环境本次实验使用的是Java开发工具包(JDK)和Eclipse集成开发环境(IDE)。
在实验之前,我们需要确保已经正确安装了JDK和Eclipse。
三、实验步骤1. 创建一个新的Java项目,并命名为"Calculator"。
2. 在项目中创建一个新的Java类,命名为"CalculatorGUI"。
3. 在"CalculatorGUI"类中,创建一个窗口,并设置窗口的标题和大小。
4. 在窗口中添加一个文本框,用于显示计算结果。
5. 在窗口中添加一些按钮,用于输入数字和运算符。
6. 为每个按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
7. 实现计算器的基本功能,包括加法、减法、乘法和除法。
8. 运行程序,测试计算器的功能。
四、实验结果经过实验,我们成功地实现了一个简单的Java计算器。
用户可以通过按钮输入数字和运算符,并且计算器可以正确地执行相应的运算。
计算结果会显示在文本框中。
五、实验总结通过这个实验,我们学习了如何使用Java编程语言创建图形用户界面,并且掌握了Java计算器的基本实现方法。
在实验过程中,我们遇到了一些问题,比如如何处理用户输入错误的情况,如何处理除数为零的情况等。
通过不断调试和改进,我们最终解决了这些问题,并实现了一个功能完善的计算器。
在今后的学习和工作中,我们可以进一步扩展这个计算器的功能,比如添加科学计算功能、实现复杂运算等。
java-计算器实验报告

计算器实验报告一、实验目的1.熟悉java图形用户界面的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.熟悉java awt和swing的组合4.掌握常用组建的事件借口5.会应用awt和swing组件进行应用程序设计二、实验内容运用所学的java语言,实现计算器的基础功能,及科学计算器的一些功能。
三、实验设计按钮。
第二类按钮式功能式按钮,例如+、-、*、/、%等按钮。
JMenuBar按钮设置了工具条菜单栏,这次总共设置了两个菜单。
这两种按钮需要注册监听,需要实现public void actionPerformed(ActionEvent e)函数,通过e.getSource()可以识别注册监听的按钮,并进行相应的操作。
计算器界面如下所示:菜单栏代码如下:jmb=new JMenuBar();jm1=new JMenu("选项(V)");//助记符,Alt+vjm1.setMnemonic('v');jm2=new JMenu("关于(A)");jm2.setMnemonic('a');jmi1=new JMenuItem("标准");//注册监听jmi1.addActionListener(this);jmi1.setActionCommand("标准");jmi2=new JMenuItem("科学");jmi2.addActionListener(this);jmi2.setActionCommand("科学");jmi3=new JMenuItem("关于计算器");jmi3.addActionListener(this);jmi3.setActionCommand("about");窗体设置的代码:this.setIconImage(new ImageIcon("images/计算器图片.jpg").getImage());this.setTitle("计算器");this.setBounds(500, 180,300,300);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);时间监听处理函数代码://通常在按钮被按下,或双击一个列表项或选中某个菜单时发生@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubif(e.getSource()==jb[18]){//等于double result=0;num2=Double.parseDouble(jtf.getText());switch(ch){case'+':result=num1+num2;break;case'-':result=num1-num2;break;case'*':result=num1*num2;break;case'/':if(num2!=0)result=num1/num2;elsejtf.setText("0");break;case'%':if(num2!=0)result=num1%num2;elsejtf.setText("0");break;case'e':result=num1*Math.pow(10, num2);break;}if(num2!=0){if(result==(int)(result))jtf.setText((int)(result)+"");elsejtf.setText(result+"");}isdecnum=false;}四、实验总结:通过对计算器窗体的编写我熟悉java图形用户界面的设计原理和程序结构熟悉java awt和swing的组合。
java 计算器 实验报告

java 计算器实验报告Java计算器实验报告一、引言计算器是我们日常生活中常用的工具之一,它可以帮助我们进行简单的数学运算。
随着计算机技术的发展,计算器也逐渐从传统的机械计算器转变为电子计算器,甚至是手机上的应用程序。
本实验旨在利用Java编程语言设计一个简单的计算器,并通过实现基本的数学运算功能来加深对Java编程的理解和应用。
二、实验目的1. 掌握Java编程语言的基本语法和数据类型;2. 理解面向对象编程的概念和思想;3. 学习如何使用Java编写简单的用户界面;4. 实现基本的数学运算功能。
三、实验方法本实验采用Java编程语言,使用Eclipse集成开发环境进行开发。
主要步骤如下:1. 创建一个Java项目;2. 在项目中创建一个计算器类,实现基本的数学运算功能;3. 使用Swing库设计一个简单的用户界面,包括数字按钮、运算符按钮和显示结果的文本框;4. 将用户界面与计算器类进行关联,实现用户输入和计算结果的交互。
四、实验过程1. 创建Java项目并导入Swing库在Eclipse中创建一个新的Java项目,并导入Swing库,以便后续设计用户界面。
2. 设计用户界面使用Swing库提供的组件,设计一个简单的用户界面。
界面包括数字按钮、运算符按钮和显示结果的文本框。
通过设置按钮的事件监听器,实现用户输入和计算结果的显示。
3. 实现计算器类创建一个名为"Calculator"的Java类,该类包含实现基本数学运算的方法。
例如,实现加法运算的方法"add",减法运算的方法"subtract"等。
4. 关联用户界面和计算器类在用户界面的事件监听器中,调用计算器类的相应方法,实现用户输入和计算结果的交互。
五、实验结果经过以上步骤的设计和实现,我们成功创建了一个简单的Java计算器。
用户可以通过界面上的按钮输入数字和运算符,并在文本框中显示计算结果。
java简易计算器实训报告

java简易计算器实训报告一、实训目的与背景本次实训的主要目的是通过编写一个简易计算器程序,学习和掌握Java编程语言的基本语法和面向对象编程的思想,了解Java语言中常用的数据类型、运算符、控制语句和输入输出方法等。
二、实训内容1.计算器的实现本次实训中,我以控制台界面为主,编写了一个简易的Java计算器程序。
程序支持基本的四则运算,包括加减乘除和取模运算。
同时,程序还支持多次运算,并能够检查输入的表达式是否合法。
2.面向对象设计在本次实训中,我采用了面向对象的设计思想,将整个程序分解成若干个类,通过类之间的交互实现计算器的功能。
(1)定义了一个名为Calculator的类,该类包含了计算器的主要功能方法,如加减乘除和取模运算等。
(2)定义了一个名为Operation的类,该类封装了运算符和运算数,便于进行表达式的解析处理。
三、实训过程1.需求分析在编写本次实训的计算器程序之前,我先对计算器的功能需求进行了分析。
(1)程序需要支持基本的四则运算,包括加减乘除和取模运算。
(2)程序需要支持多次运算。
(3)程序需要检查输入的表达式是否合法,避免出现错误。
2.编写程序在需求分析完成后,我开始着手编写程序。
首先,我创建了一个名为Calculator 的类,该类包含了计算器的主要功能方法。
在Calculator类中,我定义了以下几个方法:(1)addition方法:用于实现加法运算。
(2)subtraction方法:用于实现减法运算。
(3)multiplication方法:用于实现乘法运算。
(4)division方法:用于实现除法运算。
(5)modulo方法:用于实现取模运算。
(6)calculate方法:用于解析表达式并计算结果。
(7)main方法:用于启动程序。
接着,我定义了一个Operation类,封装了运算符和运算数,方便进行表达式的解析处理。
在Operation类中,我定义了以下两个属性:(1)operator:用于存储运算符。
Java实验报告[Calculator]-计算器
![Java实验报告[Calculator]-计算器](https://img.taocdn.com/s3/m/d9c66a9e8ad63186bceb19e8b8f67c1cfad6ee0e.png)
计算机科学系实验报告(首页)课程名称: Java2 程序设计班级: 03计(2)班实验名称: 计算器指导教师: 刘 *姓名: 学号: 13 日期: 2005-10-9一: 实验任务和目的:图形界面设计熟悉java.awt包中的组件, 掌握图形界面设计方法, 理解委托事件处理模型。
二: 实验题意和要求:设计并实现Windows系统中的“计算器”的窗口及功能1.设计图形界面, 窗口上添加各种组件及菜单, 并处理组件及菜单的事件监听程序。
实现多种运算, 保证运算正确性。
三: 程序分析讨论、体会:1.界面布局: 主框架:list, 网格布局如图(采用Panel容器), 计算结果显示文本行:show (JTextField), 关于对话框:about(Dialog),据自己掌握的知识, 发觉TextField里面的字符无法靠右显示。
查阅资料后, 发现JTextField可以, 它是属于javax.swing包的, 和TextField几乎一样, 但是其具有的功能属性更丰富。
关于运算:进行运算时, 必须先把文本行的字符串类型(String)的数值转换成数字型(Double)才能进行。
四: 应用主程序清单://package Calculator;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator extends WindowAdapter implements ActionListener{Frame list;JTextField show;Button bc,c,ce,ab,jia,jian,cheng,chu,equ,point,sqrt,ds,bfh,zf;//按钮退格, 清空, 复位, 关于, 加, 减, 乘, 除, 等号, 小数点, 2次方根, 倒数, 百分号, 正负号Button b[]=new Button[10]; //按钮数组, 数字键0~9double sum=0,getValue;int i=0,j=0,p=0,l,action;final int slength=30; //设置结果显示有效长度public void disp(){list=new Frame("Calculator");list.setSize(250,190);list.setLocation(320,250);list.setBackground(Color.LIGHT_GRAY);list.setLayout(new FlowLayout(FlowLayout.CENTER));list.setResizable(false);show=new JTextField(20);show.setText("0");show.setHorizontalAlignment(SwingConstants.RIGHT);show.setEditable(false);list.add(show);Panel dispTop=new Panel();list.add(dispTop);dispTop.setLayout(new GridLayout(1,4,3,3));bc=new Button(" Back ");bc.setForeground(Color.BLUE);dispTop.add(bc);ce=new Button(" CE ");ce.setForeground(Color.BLUE);dispTop.add(ce);c=new Button(" C ");c.setForeground(Color.BLUE);dispTop.add(c);ab=new Button(" About ");ab.setForeground(Color.BLUE);dispTop.add(ab);about=new Dialog(list,"About Calculator",true);Label ct=new Label("CopyRight (c) HZU 03J2 Jastby",1);ct.setForeground(Color.RED);about.add(ct,"Center");about.setSize(200,100);about.setLocation(500,300);about.addWindowListener(this);Panel dispMain=new Panel();list.add(dispMain);dispMain.setLayout(new GridLayout(1,2,10,10));Panel dispLeft=new Panel();dispMain.add(dispLeft);dispLeft.setLayout(new GridLayout(4,3,3,3));Panel dispRight=new Panel();dispMain.add(dispRight);dispRight.setLayout(new GridLayout(4,2,3,3));for(l=9;l>=0;l--){b[l]=new Button(String.valueOf(l));dispLeft.add(b[l]);b[l].addActionListener(this);}jia=new Button("+");jia.setForeground(Color.RED);jian=new Button("-");jian.setForeground(Color.RED);cheng=new Button("*");cheng.setForeground(Color.RED);chu=new Button("/");chu.setForeground(Color.RED);equ=new Button("=");equ.setForeground(Color.RED);point=new Button(".");zf=new Button(" +/- ");sqrt=new Button("sqrt");bfh=new Button("%");ds=new Button("1/x");dispRight.add(chu);dispRight.add(sqrt);dispRight.add(cheng);dispRight.add(bfh);dispRight.add(jian);dispRight.add(ds);dispRight.add(jia);dispRight.add(equ);dispLeft.add(zf);dispLeft.add(point);bc.addActionListener(this);ce.addActionListener(this);c.addActionListener(this);ab.addActionListener(this);jia.addActionListener(this);jian.addActionListener(this);cheng.addActionListener(this);chu.addActionListener(this);equ.addActionListener(this);point.addActionListener(this);zf.addActionListener(this);sqrt.addActionListener(this);bfh.addActionListener(this);ds.addActionListener(this);list.addWindowListener(this);list.setVisible(true);}public void actionPerformed(ActionEvent e){getValue=Double.valueOf(show.getText()).doubleValue();//getValue=Double.valueOf(show.getText());//如果该行出错, 则在后面加上.doubleValue(); 属版本兼容问题if(e.getSource()==jia){ //加运算, 可连加if(j==0){sum=getValue;}else if(action==1){sum+=getValue;}setSum();j++;p=0;i=0;action=1;}else if(e.getSource()==jian){ //减运算, 可连减if(j==0){sum=getValue;}else if(action==2){sum-=getValue;}setSum();j++;p=0;i=0;action=2;}else if(e.getSource()==cheng){ //乘运算, 可连乘if(j==0){sum=getValue;}else if(action==3){sum*=getValue;}setSum();j++;p=0;i=0;action=3;}else if(e.getSource()==chu){ //除运算, 可连除if(j==0)sum=getValue;else if(action==4){sum/=getValue;}setSum();j++;p=0;i=0;action=4;}else if(e.getSource()==equ){ //等号,运算最后一个操作数switch(action){case 1:show.setText(String.valueOf(sum+=getValue));break;case 2:show.setText(String.valueOf(sum-=getValue));break;case 3:show.setText(String.valueOf(sum*=getValue));break;case 4:show.setText(String.valueOf(sum/=getValue));break;}setSum();i=0;j=0;action=0;}else if(e.getSource()==point){ //小数点,只能按一个小数点if(p==0)show.setText(show.getText()+e.getActionCommand());p=1;}else if(e.getSource()==c||e.getSource()==ce){ //清空与复位i=0;j=0;p=0;sum=0;action=0;show.setText("0");}else if(e.getSource()==bc){ //退格String s=show.getText();if(s.length()>1){show.setText("");for (l=0;l<s.length()-1;l++){ //按一下,删除尾部一位char a=s.charAt(l);show.setText(show.getText()+a);}}elseshow.setText("0");}else if(e.getSource()==ab){ //关于,弹出对话框about.setVisible(true);}else if(e.getSource()==sqrt){ //开2次方根sum=Math.sqrt(getValue);setSum();j++;}else if(e.getSource()==ds){ //求倒数sum=1/getValue;setSum();j++;}else if(e.getSource()==bfh){ //百分号sum=getValue/100;setSum();j++;}else if(e.getSource()==zf){ //正负号切换,正号不显示String s=show.getText();char a=s.charAt(0);if(a=='-'){show.setText("");for(l=1;l<s.length();l++){ //去掉负号show.setText(show.getText()+s.charAt(l));}}else if(getValue!=0){ //加上负号show.setText("-"+s);}}for(l=0;l<10;l++){ //0~9数字键触发if(e.getSource()==b[l]){if(i==0)show.setText("");String s = show.getText();if(s.length()<slength)show.setText(show.getText()+e.getActionCommand());if(e.getSource()==b[0] && getValue==0 && p==0)show.setText("0");if(e.getSource()!=b[0] && getValue==0 && p==0)show.setText(e.getActionCommand());i++;}}}public void setSum(){ //把计算结果显示出来show.setText(String.valueOf(sum));String s = show.getText();char a=s.charAt((s.length()-1));char b=s.charAt((s.length()-2));if (a=='0' && b=='.'){ //如果是整数,则去掉后面的小数点和0show.setText(String.valueOf(Math.round(sum)));}}public void windowClosing(WindowEvent e){if(e.getSource()==about)about.setVisible(false);else if(e.getSource()==list)System.exit(0);}public static void main(String args[]){(new Calculator()).disp();}}。
JAVA计算器实验报告

JA V A计算器实验报告一、实验目的实现计算器的加减乘除基本运算了解JA V A程序设计中的类与对象,类及成员的定义掌握运算符及基本的表达式与异常处理掌握JA V A 的系统类语言包,工具包,数学包二﹑实验原理运用JA V A语言设计出具有运算功能的计算器。
计算器的设计要点有以下两个1、界面的设计:Swing布局。
2、数据输入:鼠标事件响应。
三实验要求实现计算器的加减乘除运算。
四实验结果(程序)与分析import java.awt.*;import java.awt.event.*;import javax.swing.*;public class CalculatorJFrame extends JFrame implements ActionListener{private JTextField text; //显示计算结果的文本行private char op; //当前运算符private float value; //当前计算结果值private boolean first; //表示是否为数值的第1个数字public CalculatorJFrame(){super("计算器");this.setSize(280,210);this.setLocation(300,240);this.display(); //显示图形用户界面this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setV isible(true);op='+';value=0.0f;first=true;}private void display() //图形用户界面{text = new JTextField("0.",30);text.setHorizontalAlignment(JTextField.RIGHT); //设置对齐方式,右对齐text.setEditable(false); //只能显示,不允许编辑this.getContentPane().add(text,"North");JPanel panel = new JPanel(new GridLayout(5,4,5,5));//面板采用网格布局this.getContentPane().add(panel);Stringstr[]={"sqrt","+/-","Backspace","C","7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"} ;JButton buttons[] = new JButton[str.length];for (int i=0; i<buttons.length; i++){buttons[i] = new JButton(str[i]);panel.add(buttons[i]);buttons[i].addActionListener(this); //为按钮注册单击事件监听器}}public void actionPerformed(ActionEvent e) //按钮单击的事件处理方法{String current = e.getActionCommand(); //获取按钮标签if (current=="C") //清除{text.setText("0."); //重新设置文本内容value = 0.0f;first = true;return;}if (current=="Backspace") //退格{String str=text.getText().substring(0,text.getText().length()-1);text.setText(str);if (str==""){text.setText("0.");first = true;}return;}if (current.charAt(0)>='0' && current.charAt(0)<='9' || current==".") //0~9数字按钮{if (first){text.setText("");first = false;}text.setText(text.getText()+current);}else{System.out.print(""+value+op+text.getText()+"=");switch (op){case '+': value += Float.parseFloat(text.getText());break; //转换成浮点数后运算case '-': value -= Float.parseFloat(text.getText());break;case '*': value *= Float.parseFloat(text.getText());break;case '/': value /= Float.parseFloat(text.getText());break;}System.out.println(""+value);text.setText(""+value);op = current.charAt(0); //字符串中取第1个字符first = true;}}public static void main(String arg[]){new CalculatorJFrame();}}实验结果:实验分析:计算器中有具有计算功能的类,myframewithmenu,在myframewithmenu中有窗口,按键,面板,菜单等组件,然后将组件添加到panel中,接着把panel添加到frame中,设置布局。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称JAVA计算器程序设计课程名称JAV A程序设计课程号学院(系)专业班级学生姓名学号实验地点完成日期实验JAVA计算器程序设计1)实验总结:刚做之前,勉强还能做些小程序,但在进行了计算器程序设计的时候,才发现很多语句还不能联系运用,大部分还是通过百度和书籍才勉勉强强完成,看来实践才是硬道理2)实验目的通过计算器程序设计,能够更加深入的了解JAVA,熟悉图形用户的设计原理和程序结构等4)实验内容和步骤实验内容应用JAV A软件设计一个简易的计算器,实现基本的四则运算及括号设计流程1.分析该计算器需要完成的功能。
用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。
同时还完成了计算器中C按钮清屏功能和Backspace退格键。
2.考虑异常处理。
(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。
(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显示“对不起,您没有任何输入,请重新输入:”。
(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce键,Backspace 键时提示错误。
4.考虑数据的处理目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通过调用JAV A中script这个包中的相关类和方法来实现数据的处理。
5.编码实现计算器的功能。
(1)新建相关的文件。
(2)引入JAV A中相关的包。
(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。
(5)对所创建的组件进行布局,完成界面的实现。
(6)为各个组件添加事件监听器。
(7)重写事件接口ActionListener的方法public void actionPerformed(ActionEvent e)。
4、程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.awt.List;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;public class Calculator extends Frame{public static void main(String[]args){final Frame window=new Frame("Calculator");window.setSize(380,337);window.setResizable(false);int width=Toolkit.getDefaultToolkit().getScreenSize().width;int height=Toolkit.getDefaultToolkit().getScreenSize().height;window.setLocation(width/2-200,height/2-150);window.setLayout(null);/final JTextField text=new JTextField();text.setHorizontalAlignment(JTextField.RIGHT);//text.setEditable(false);text.setEditable(true);text.setBounds(10,40,360,50);window.add(text);text.setForeground(Color.blue);text.setBackground(Color.LIGHT_GRAY);text.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){ScriptEngineManager sem1=new ScriptEngineManager();ScriptEngine se1=sem1.getEngineByName("js");try{int leng10=text.getText().length();if(leng10==0){JOptionPane.showMessageDialog(null,"对不起,您没有任何输入,请重新输入:");text.requestFocusInWindow();else{String reslut=se1.eval(text.getText()).toString();text.setText(text.getText()+"="+reslut);text.requestFocus();}}catch(ScriptException evt){JOptionPane.showMessageDialog(null,"表达式错误,请重新输入!");text.setText("");//给文本框赋值为空达到清屏作用text.requestFocus();}}});/***********设置0键***************/final JButton b0=new JButton("0");//新建按钮0b0.setBounds(10,283,72,50);//设置0键的位置window.add(b0);//把文本框添加到窗口中b0.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){text.setText(text.getText()+"0");text.requestFocus();}});/********设置1键****************/final JButton b1=new JButton("1");window.add(b1);b1.setBounds(10,233,72,50);b1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){text.setText(text.getText()+"1");text.requestFocus();}});/***********设置2键*****************/final new"2"b2.setBounds(82,233,72,50);window.add(b2);b2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"2");text.requestFocus();}});/********设置3键****************/final JButton b3=new JButton("3");b3.setBounds(154,233,72,50);window.add(b3);b3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"3");text.requestFocus();}});/*********设置4键***************/final JButton b4=new JButton("4");b4.setBounds(10,183,72,50);window.add(b4);b4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"4");text.requestFocus();}});/*********设置5键*************/final JButton b5=new JButton("5");b5.setBounds(82,183,72,50);window.add(b5);b5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"5");text.requestFocus();});/********设置6键***************/final JButton b6=new JButton("6");b6.setBounds(154,183,72,50);window.add(b6);b6.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"6");text.requestFocus();}});/*********设置7键**************/final JButton b7=new JButton("7");b7.setBounds(10,135,72,50);window.add(b7);b7.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"7");text.requestFocus();}});/**********设置8键***************/final JButton b8=new JButton("8");b8.setBounds(82,135,72,50);window.add(b8);b8.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.setText(text.getText()+"8");text.requestFocus();}});/***********设置9键**************/final JButton b9=new JButton("9");b9.setBounds(154,135,72,50);window.add(b9);b9.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)text.setText(text.getText()+"9");text.requestFocus();}});/***********设置加法键**************/final JButton Add=new JButton("+");Add.setBounds(154,283,72,50);window.add(Add);Add.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){text.setText(text.getText()+"+");text.requestFocus();}});/***********设置减法键**************/final JButton Sub=new JButton("-");Sub.setBounds(298,183,80,50);//设置减法键的位置window.add(Sub);//把减号键添加到窗口中Sub.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){text.setText(text.getText()+"-");text.requestFocus();}});/***********设置乘法键**************/final JButton Multi=new JButton("*");Multi.setBounds(226,183,72,50);window.add(Multi);Multi.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng3=text.getText().length();if(leng3>=1){text.setText(text.getText()+"*");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"您输入的第一个字符为乘号,不符合要求请重新输入:");text.requestFocus();}}});/***********设置除法键**************/final JButton Div=new JButton("/");Div.setBounds(226,135,72,50);window.add(Div);Div.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng4=text.getText().length();if(leng4>=1){text.setText(text.getText()+"/");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"您输入的第一个字符为除号,不符合要求请重新输入:");text.requestFocus();}}});/***********设置等号键**************/final JButton equal=new JButton("=");equal.setBounds(226,283,153,50);window.add(equal);equal.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){ScriptEngineManager sem=new ScriptEngineManager();ScriptEngine se=sem.getEngineByName("js");try{int leng5=text.getText().length();if(leng5==0){JOptionPane.showMessageDialog(null,"对不起,您没有任何输入,请重新输入:");text.requestFocus();}else{se.eval(text.getText()).toString();text.setText(text.getText()+"="+reslut);text.requestFocus();}}catch(ScriptException evt){JOptionPane.showMessageDialog(null,"表达式错误,请重新输入!");text.setText("");text.requestFocus();}}});/***********设置小数点键**************/final JButton point=new JButton(".");point.setBounds(82,283,72,50);window.add(point);point.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng6=text.getText().length();if(leng6>0){text.setText(text.getText()+".");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"您输入的第一个字符为小数点,不符合要求请重新输入:");text.requestFocus();}}});/***********设置左括号键**************/final JButton left=new JButton("(");left.setBounds(226,233,72,50);//设置左括号键的位置window.add(left);//把左括号键添加到窗口中left.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){text.setText(text.getText()+"(");text.requestFocus();}/***********设置右括号键**************/final JButton right=new JButton(")");right.setBounds(298,233,80,50);//设置右括号键的位置window.add(right);//把右括号键添加到窗口中right.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng7=text.getText().length();if(leng7>0){text.setText(text.getText()+")");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"您输入的第一个字符为右括号,不符合要求请重新输入:");text.requestFocus();}}});/***********设置清屏键**************/final JButton ce=new JButton("CE");ce.setBounds(190,90,186,45);window.add(ce);ce.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng8=text.getText().length();if(leng8>0){text.setText("");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"当前以经为空,无需清屏!");text.requestFocus();}}});/***********设置退格键**************/final new"Backspace"back.setBounds(10,90,180,45);window.add(back);back.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String message;int leng=text.getText().length();message=text.getText();if(leng==0){JOptionPane.showMessageDialog(null,"对不起,您没有任何输入无法退格:");text.requestFocus();}else{text.setText(message.substring(0,leng-1));text.requestFocus();}}});final JButton Air=new JButton("%");Air.setBounds(298,135,80,50);window.add(Air);Air.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int leng9=text.getText().length();{if(leng9>0){text.setText(text.getText()+"%");text.requestFocus();}else{JOptionPane.showMessageDialog(null,"您输入的第一个字符为求余数,不符合要求请重新输入:");text.requestFocus();}}});/*********关闭按钮***********/window.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) {System.exit(0);}});window.show();}}程序截图1.初始运行界面2.运行测试成绩指导教师日期注:请用A4纸书写,不够另附纸。