java计算器实验报告

合集下载

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 计算器实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java计算器实验报告-V1

Java计算器实验报告-V1

Java计算器实验报告-V1Java计算器实验报告一、实验目的本次实验旨在巩固Java语言的基础知识,提高学生对于面向对象程序设计思想的理解能力,以及能够使用Java实现一个简单的计算器程序。

二、实验原理计算器程序是一种非常基础的应用程序,其功能主要就是进行数字运算。

在实现计算器程序时,需要设计出一个能够接受用户输入的界面,并能够将输入的数据进行运算后输出结果。

在实现计算器程序时应采用面向对象的编程方式,按照设计模式分为模型、视图和控制器三个模块进行设计和编码。

三、实现步骤1. 模型层的实现在模型层中,需要定义一个Calculator类,其中包括了数字、运算符等运算元素以及进行运算的方法。

可以根据需求,实现加、减、乘、除、取余、开方等基本计算功能。

2. 视图层的实现视图层主要是实现用户界面,将用户输入的数据以及计算结果显示在界面上。

可以采用Java Swing技术进行实现,在面板中添加按钮、文本框等控件,提供操作按钮接收用户输入,再通过文本框将结果输出到界面上。

3. 控制器层的实现控制器层主要是将模型和视图两层进行连接,完成用户界面与计算功能的交互。

其中的核心内容是监听按钮等控件的事件,并且根据不同事件执行相应的计算方法,最终将计算结果显示在屏幕上。

四、实验结果通过以上部分的实现,最终能够得到一个功能完善、简便易用、稳定可靠的计算器程序。

用户可以根据自己的需求进行输入操作,通过各种不同的按钮实现各种计算操作,最终实现对数字进行自由简单的计算。

五、实验总结本次实验中,我能够通过Java语言设计模式,掌握了实现一个简单的计算器程序所需的基本技能。

在程序实现过程中,我也更加深入地理解了面向对象的思维方式,能够更好地把握Java语言的核心思想和编程范式。

此外,通过本次实验,我也意识到了计算器程序的设计必须要非常仔细,需要严谨检测程序每个功能的正确性以及程序稳定性,这对于后续工作的开展具有很大的指导意义。

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编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。

一、实验目的本实验的主要目的是通过设计和实现一个基本的计算器,加深对Java编程语言的理解和应用。

通过这个实验,我们可以学习到如何设计一个简单的界面,实现基本的计算功能,并对用户输入进行处理和错误处理。

二、实验步骤1. 界面设计首先,我们需要设计一个简单的计算器界面。

可以使用Swing或JavaFX等工具包来实现界面设计。

界面应该包括数字按钮、运算符按钮以及一个显示屏幕等组件。

2. 事件处理接下来,我们需要为每个按钮添加事件处理程序。

当用户点击按钮时,程序应该能够根据按钮的类型执行相应的操作。

例如,当用户点击数字按钮时,程序应该能够将数字显示在屏幕上;当用户点击运算符按钮时,程序应该能够执行相应的运算。

3. 运算逻辑在实现运算逻辑时,我们需要考虑用户的输入和错误处理。

例如,当用户输入非法字符或进行非法操作时,程序应该能够给出相应的提示或错误信息。

同时,我们还需要考虑运算的优先级和顺序,确保计算结果的准确性。

4. 测试和调试完成代码编写后,我们需要进行测试和调试。

通过输入一系列数字和运算符,检查计算器是否能够正确计算并显示结果。

如果发现错误或异常,需要对代码进行调试,找出并解决问题。

三、实验结果经过测试和调试,我们成功实现了一个简单的计算器。

用户可以通过界面上的按钮输入数字和运算符,并在屏幕上显示计算结果。

计算器能够处理用户的输入并进行相应的运算,同时还能够对错误输入进行处理和提示。

四、实验总结通过本实验,我们深入了解了Java编程语言的应用和实践。

通过设计和实现一个简单的计算器,我们掌握了界面设计、事件处理和运算逻辑的基本原理和方法。

同时,我们也学会了如何进行测试和调试,提高了代码的可靠性和稳定性。

(完整word版)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。

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

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) 系统指令,结束程序。

void initMainFrame(){mainFrame = new Frame("计算器");mainFrame.setSize(270,250);mainFrame.setLocation(200,140);mainFrame.setBackground(Color.lightGray);mainFrame.setResizable(false);mainFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}对文本框的初始化操作initTextField() 是对文本textBuffer answerText memoryState的初始化,textBuffer 是用于对文本的缓冲处理,StringBuffer类优于String类是因为StringBuffer是对字符串直接操作,从而节省了内存。

由于在这个计算器程序中,对字符串的操作量很大,因此,StringBuffer 在这方面体现出了其本身的优势。

answerText 和memoryState 用swing的组件JTextField是因为JTextField显示文本框时可以在文本框的右边显示,符合Windows自带计算器的特点。

answerText 和memoryState 的背景色为白色,都不能进行编辑。

answerText为右对齐,大小为23个字符,而memoryState为2个字符。

void initTextField(){textBuffer = new StringBuffer("");answerText = new JTextField(textBuffer.toString(),23);answerText.setHorizontalAlignment(JTextField.RIGHT);answerText.setEditable(false);answerText.setBackground(Color.white);memoryState = new JTextField(2);memoryState.setEditable(false);memoryState.setBackground(Color.white);}对各按钮的初始化操作initButtons()函数是对各按钮进行初始化,为每一个按钮增加其标签并增加了addActionListener(this) 功能,用于给各按钮增加属性,具体的功能代码,请见actionPerformed(ActionEvent e);其中,数字按钮、四则运算按钮、小数点按钮都增加了键盘输入功能addKeyListener其参数为匿名类KeyListener的适配器new KeyAdapter(),当在键盘上按下相应的键时,为其增加相应的属性功能。

void initButtons(){buttonBackSpace = new Button("BackSpace");buttonBackSpace.addActionListener(this);buttonCE = new Button(" CE ");buttonCE.addActionListener(this);buttonC = new Button(" C ");buttonC.addActionListener(this);buttonMC = new Button("MC");buttonMC.addActionListener(this);buttonMR = new Button("MR");buttonMR.addActionListener(this);buttonMS = new Button("MS");buttonMS.addActionListener(this);buttonMADD = new Button("M+");buttonMADD.addActionListener(this);buttonNum = new Button[10];for (int i=0;i<buttonNum.length ;i++ ){buttonNum[i] = new Button(Integer.toString(i));buttonNum[i].addActionListener(this);buttonNum[i].addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (Character.isDigit(e.getKeyChar())){textBuffer.append(e.getKeyChar());answerText.setText(textBuffer.toString());AddNum();}}});}buttonAdd = new Button("+");buttonAdd.addActionListener(this);buttonAdd.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '+')AddFunction(1);}});buttonSub = new Button("-");buttonSub.addActionListener(this);buttonSub.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '-')AddFunction(2);}});buttonMul = new Button("*");buttonMul.addActionListener(this);buttonMul.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '*')AddFunction(3);}});buttonDiv = new Button("/");buttonDiv.addActionListener(this);buttonDiv.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '/')AddFunction(4);}});buttonDot = new Button(".");buttonDot.addActionListener(this);buttonDot.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '.'){textBuffer.append(e.getKeyChar());answerText.setText(textBuffer.toString());AddNum();}}});buttonSign = new Button("+/-");buttonSign.addActionListener(this);buttonEqual = new Button("=");buttonEqual.addActionListener(this);buttonEqual.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if (e.getKeyChar() == '=')OnGo();}});buttonSqrt = new Button("sqrt");buttonSqrt.addActionListener(this);buttonMod = new Button("%");buttonMod.addActionListener(this);buttonReciprocal = new Button("1/x");buttonReciprocal.addActionListener(this);}对菜单的初始化操作initMenu()函数是对各菜单的初始化,先为其生成实例对象,再添加到MenuBar 的实例对象menuGroup中,MenuItem各项添加到相应的Menu中。

相关文档
最新文档