《实验报告计算器》由会员分享,可在线阅读,更多相关《实验报告计算器(7页珍藏版)》请在金锄头文库上搜索。
1、华北电力大学实验报告- 0 -实实 验验 报报 告告|实验名称实验名称 计算器 课程名称课程名称 面向对象程序设计(JAVA) |一、实验目的综合应用所学的知识分析问题、解决问题,提高实际编程能力及程序调试能力。二、实验内容及要求用图形界面 GUI 编程,编写一个能够实现加减乘除的简单的计算器,要求使用监听类,还要能够连续加减,有清除功能,能够准确的计算出正确结果。三、实验仪器与设备计算机,JDK,我用的是 eclipse。四、问题分析与系统设计问题分析:首先需要把图形界面设计出来,给组件注册监听器,转换事件信息,实现对数据的加、减、乘、除等计算器的基本的功能华北电力大学实验报告- 1 -设计
2、思想与设计结果:在主类 Caculater 中使用监听内部类 MyMonitor 对各个组件进行监听,在 MyMonitor 中对按键信息进行分类处理(数字,算术符号,功能键)。数据成员主要有各个按钮以及计算器的各个状态(如初始状态等)。成员函数有:1、对退格键的处理:backSpace() 2、对算是符号的处理:operater() 3、将数字字符串转换成数字:getDate()五、实验结果相反数、平方根等功能,能够将图形界面设计出来给注册监听器,实现界面与基本实现了简单的的加、减、乘、除以及倒数和取内部代码结合。六、总结与体会1我以前不清楚界面与内部代码是怎么连接的,现在知道了。还学会简单
3、的 GUI 编程,能够实现对界面进行布局2跟 c+有很大的不同,java 多了许多的包,类呀,这样是编译快捷而且安全正确,学会使用了内部类,懂得了事件的响应以及如何处理事件。3锻炼了编程的逻辑思维,能够对数据进行逻辑的处理以及对整个程序的逻辑部署4还知道了要想吧 java 学好是很难的,里面有许许多多的包,类。要想好好运用java 就必须运用好 java 类包,java 的简单编程只是基础,掌握系统提供的 package 和class 才是成为 java 厉害者的必经之路。附件:源程序清单 import java.awt.BorderLayout;import java.awt.Button;
4、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.u
5、til.List;public class Caculator extends Frame List list = new ArrayList();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“, “+/-“, “.“
6、, “+“, “=“ ;private String special = “, “MC“, “MR“, “MS“, “M+“ ;private boolean firstInput = true;华北电力大学实验报告- 2 -private boolean legal = true;private double dataResult = 0;private String s = null;private TextField tf = new TextField();private Button bn = new Buttonnormal.length;private Button bc = n
7、ew Buttoncommand.length;private Button bs = new Buttonspecial.length;private Mymonitor mn = new Mymonitor();public static void main(String args) CouterClient cc = new CouterClient();cc.launchFrame();public void launchFrame() this.setLocation(200, 250);this.setBackground(Color.blue);this.setTitle(“计算
8、器“); 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 = 0) if (firstInput) tf.setText(s);if (fir
9、stInput firstInput = false; else if (!firstInput) if (s.equals(“.“) if (tf.getText().indexOf(“.“) 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
10、 / this.dataResult; else if (key.equals(“=“) 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()
11、 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;华北电力大学实验报告- 6 -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;