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课程设计报告组员信息:第(二)组计算器的实现问题问题描述:制作一个计算器基本要求:要求实现类似Windows操作系统里面的标准计算器。

在此基础上实现部分科学性的功能。

测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测试算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用addActionListener()对各个时间进行监听。

调用系统库函数对数值进行运算。

模块划分:1、主函数main()创建一个计算器。

2、void actionPerformed(ActionEvent e)对鼠标点击的事件进行响应以及在文本框中的显示。

3、各Buuton对应的功能:“开方”:对输入数字开方“平方”:对输入数字平方“getResult()”:对四则运算进行分别运算操作“backspace”:取消上一次的操作“CE”:取消上一次运算的操作“C”:清空作用“sin”:对输入数据进行sin运算“cos”:对输入数据进行cos运算“tan”:对输入数据进行tan运算“+/-”:对输入的数据取反“+”,“-”,“*”,“/”:对数据进行四则运算源程序:package hechongwei;import ng.String;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import ng.Math;class Calculator extends JFrame implementsActionListener {JTextField tf = new JTextField(" ");String str1 = " ", str2 = " ", str3 = " "; // str1和str2存放两个输入的数Panel pn1 = new Panel();// new 一个Panel存放符号与数字String a[] = { "平方", "开方", "backspace", "CE", "C", "7", "8", "9", "/","sin", "4", "5", "6", "*", "cos", "1", "2", "3", "-", "tan", "0","+/-", ".", "+", "="};// 用于对每个Button 进行赋值boolean frist = true;// 判断是否输入的为第一个字符int operCount = 0;int i; // 统计符号的数目String Operate = null;// 存放操作数的符号boolean error = false;double num1 = 0.0, num2 = 0.0;// 两个输入的数作运算时转化为double存放double result = 0.0;// 暂时保留计算结果public Calculator() {super("简单计算机 ");tf.setHorizontalAlignment(JTextField.RIGHT) ;// 显示框中由右想左输出tf.setEditable(false);Button b[] = new Button[25];for (i = 0; i < 5; i++) { // 将符号加到对应的Button上b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);// 调用addActionListener()方法注册事件监听器}for (i = 5; i <= 7; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[8] = new Button(String.valueOf(a[8]));pn1.add(b[8]);b[8].setActionCommand("oper");b[8].addActionListener(this);b[9] = new Button(String.valueOf(a[9]));pn1.add(b[9]);b[9].setActionCommand(a[9]);b[9].addActionListener(this);for (i = 10; i <= 12; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[13] = new Button(String.valueOf(a[13])); pn1.add(b[13]);b[13].setActionCommand("oper");b[13].addActionListener(this);b[14] = new Button(String.valueOf(a[14])); pn1.add(b[14]);b[14].setActionCommand(a[14]);b[14].addActionListener(this);for (i = 15; i <= 17; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[18] = new Button(String.valueOf(a[18])); pn1.add(b[18]);b[18].setActionCommand("oper");b[18].addActionListener(this);b[19] = new Button(String.valueOf(a[19])); pn1.add(b[19]);b[19].setActionCommand(a[19]);b[19].addActionListener(this);for (i = 20; i <= 22; i++) {b[i] = new Button(a[i]);pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);}b[23] = new Button(String.valueOf(a[23])); pn1.add(b[23]);b[23].setActionCommand("oper");b[23].addActionListener(this);b[24] = new Button(String.valueOf(a[24])); pn1.add(b[24]);b[24].setActionCommand(a[24]);b[24].addActionListener(this);pn1.setLayout(new GridLayout(5, 5));add(tf, "North"); // 界面的处理add(pn1, "Center");setSize(400, 300);setVisible(true);tf.setText("0.0");addWindowListener(new WindowAdapter() { //程序结束public void windowClosing(WindowEvent e) {System.exit(1);}});}public void actionPerformed(ActionEvent e) { Button temp = (Button) e.getSource();try {if(e.getActionCommand().equals("number")) {if (frist) {str1 = str1 + temp.getLabel();tf.setText(str1); // 将输入的str1在显示框中显示} else {str2 = str2 + temp.getLabel();tf.setText(str2);// 将输入的str2在显示狂中显示}} else if(e.getActionCommand().equals("oper")) {if (str1 == " ") {operCount= 0;// 如果还没有输入数就点击运算符,执行iffrist = true;} else {operCount++;if (operCount > 1) {// 若输入的字符多余一个,则可进行运算getResult();}Operate= temp.getLabel(); // 存放加,减,乘,除等的符号frist = false;}} else if(e.getActionCommand().equals("=")) {if((str1== "") || (str2== "")) // 两个数没有输全就点击等号,执行if{operCount = 0;// 将按键计数器清零frist = true;} else {getResult();operCount = 0;}} else if(e.getActionCommand().equals("平方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.pow(Double.parseDouble(str1), 2);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("开方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.sqrt(Double.parseDouble(str1));str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("sin")) {if (str1 == " ") { // 处理sin0 ,cos0等tf.setText("0.0");str1 = "0";}else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.sin(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("cos")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.cos(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("tan")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.tan(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("C")) {operCount = 0;// 清空frist = true;str1 = " ";str2 = " ";str3 = " ";tf.setText("0.0");} else if(e.getActionCommand().equals("+/-")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);str1 = String.valueOf(-k);tf.setText(str1);}} else if(e.getActionCommand().equals("CE")) { // 取消上一步的运算tf.setText(str1);frist = true;operCount = 0;str2 = " ";} else if(e.getActionCommand().equals("backspace")) {{// 退格String s = tf.getText();tf.setText("");char b[] = new char[20];for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);b[i] = a;tf.setText(tf.getText() + a);}if (operCount == 0)str1 = tf.getText();elsestr2 = tf.getText();}}} catch (Exception f) {System.out.println(f.getMessage());}}void getResult() {num1 = Double.parseDouble(str1);num2 = Double.parseDouble(str2);if (Operate.equals("+")) {result = num1 + num2;} else if (Operate.equals("-")) { result = num1 - num2;} else if (Operate.equals("*")) { result = num1 * num2;}if (Operate.equals("/")) {if (num2 == 0.0) {error = true;} else {result = num1 / num2;}}if (error) {tf.setText("error");} else {tf.setText(String.valueOf(result));str3 = str1;str1 = String.valueOf(result);str2 = " ";}}public static void main(String args[]) {new Calculator();}}程序流程:if (e.getActionCommand().equals("number"))else if (e.getActionCommand().equals("oper"))else if (e.getActionCommand().equals("="))else if (e.getActionCommand().equals("平方"))else if (e.getActionCommand().equals("开方"))else if (e.getActionCommand().equals("C")) else if (e.getActionCommand().equals("CE"))void getResult()Main()主函数流程:测试情况:图形界面示意图:测试情况测试数据:输入4 ,平方显示结果为16输入4,开方显示结果为2输入4,+,2 显示结果为6输入4,-,2 显示结果为2输入4,*,2显示结果为8输入4,/,2显示结果为2输入1,+,2, +,4,CE,+8 显示结果为11输入1,+,22,Backspace ,= 显示结果为3 输入C 显示结果为0输入30,sin 显示结果为0.5。

Java计算器实验报告

Java计算器实验报告

一、目標:通過Java程序開發實訓使學生掌握《面向對象程序設計(Java)》課堂講授の內容,靈活運用到Java程序の開發與設計中。

二、要求:按時參加Java程序開發實訓訓練,不得遲到和早退;獨立完成程序設計;按要求撰寫實踐報告。

三、詳細內容:使用《面向對象程序設計(Java)》課程講授內容,編寫一個簡單の計算器,要求實現如下功能:1.進行圖形界面設計通過圖形界面設計,掌握Frame類、Panel類、5種布局管理器、文本框、標簽及按鈕の使用方法。

2.實現計算器の基本功能包括加減乘除四則運算、清除結果等功能。

3.實現計算器の存儲計算功能包括清空、使用清零、退格。

和基本運算4.類の屬性及所用到の方法布局布局:整個界面(Frame)采用BorderLayout布局P1組件添加到Frameの南部P1采用默認の流式布局添加文本框P2組件添加到Frameの中部P2采用網格布局四行五列放各種按鈕用到の類:mycalKeyAdapterWindowAdapterMyCal類:mycal類の屬性:b[];按鈕數組保存各種按鍵以後放到Panel2中tf;文本匡顯示輸入及運算結果num1,num2,jieguo運算數char c,ch;運算符號,ch為輸入の運算符號,c保存ch輸入の“+-*/”Panel p1,p2;//兩個組件p1放文本匡p2放按鈕P2の布局為網格布局5行4列mycal類の方法:1.構造方法:設置標題;設置文本框;文本框中添加匿名內置類(KeyAdapter)實現鍵盤の輸入和運算;將各種組件添加到容器,設置各種按鍵の顏色;添加WindowListenr監聽器設置關閉按鈕;2.Main方法:新建一個mycal類;4.actionPerformed 方法:設置按鈕の輸入和運算,當按下運算數將其顯示在文本匡中如果之前清零則將零去除當按下運算符將其保存在c中並將文本匡內容清空當按下等號判斷字符cの符號進行相應の運算並將結果顯示在文本框中。

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语言,设计了一个简单的计算器。

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

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

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程序设计学期: 2009-2010学年第2学期学时学分: 48学时 3学分专业班级: xxxxxxxx学号: xxxxxxxxxxx 姓名: xxxxxxx 指导老师: xxx 提交日期: xxxx年 xx月xx日题目JAVA课程设计一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。

信科0821班学生的课程设计主要是Java语言程序设计的实现。

通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。

二、实验环境硬件环境CPU:AMD5000+ 双核主板:华硕M2N-X 显示器:1024x768/256色操作系统:Windows XP;JDK:jdk-6u18-windows-i586;运行环境以及调试软件:JCreator Pro三、实验内容内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。

内容二:设计一个记事本,菜单中要求有文件,编辑,和帮助。

文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。

内容三:编写tic-tac-toe游戏程序。

即 3*3的9个方格子,每人下一次看谁先连成一行3个四、算法分析、设计与描述1.算法分析和设计内容(1)算法分析:首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等,接着可以进行加减乘除等运算,添加“C”、“CE”按钮进行退格和清空操作,清空操作显示“0”,最后在帮助中显示开发人信息。

功能及界面设计:功能1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。

功能2:输入数字后,点击进制转换,可转换成二、八进制;按“exp”“log”键,则进行e次幂运算和自然对数运算;按“tan”“cos”“sin”则进行三角函数运算。

java简易计算器实训报告

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计算器

一、实验目的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编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

通过这个实验,我们不仅学习了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。

JAVA实训报告--计算器

JAVA实训报告--计算器

《Java实训》设计报告计算器专业:计算机科学与技术班级:软件1231学号:1204311130姓名:王磊计算机技术与工程学院2013年7月11日项目简介项目名称计算器开发人员王磊项目简介本程序名称为计算器,主要功能是实现简单的数字,运算符号,计算,删除,复位等功能。

项目目的掌握计算器的各项基本功能掌握编写计算器程序的所用方法掌握Swing组件的应用掌握事件的应用主要技术Java编程语言、javaSwing技术开发环境 JDK1.6.0_24项目特点使用组件构建的C/S应用程序各项功能的组织合理搭配应用图标控制功能实现技术重点构建基于C/S架构的应用程序Swing组件应用事件监听的应用方法的编写技术难点Swing组件的应用事件监听器的使用异常处理方法简便的选择项目名称一、项目需求本程序的主要功能:(1)单击“计算器”上的数字按钮(0~9)可以设置参与计算的运算数。

(2)单击“计算器”上的运算符按钮(+、-、*、/、1/x、sqrt、%)可以选择运算符号。

(3)单击“计算器”上的“=”按钮显示计算结果。

(4)单击“计算器”上的“复位”按钮清空计算结果。

(5)单击“计算器”上的“删除”按钮删除输入的最后一个数字。

二、项目分析与设计在设计计算器时,编写2个Java源文件:CalculatorWindow.java、NumberButton.java 计算器除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。

下面是2个Java源文件的总体设计。

(1)CalculatorWindow.java(主类)CalculatorWindow类负责创建计算器的主窗口,该类含有main方法,计算器从该类开始执行。

CalculatorWindow类有4种类型的对象,分别是:LinkedList<String>、NumberButton、JButton、JTextField。

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

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实训》设计报告专业:班级:学号:姓名:计算器软件技术09-23 090123037 范付明石家庄科技信息职业学院信息工程系20XX年10月15日《Java实训》设计报告项目简介项目名称项目简介计算器开发人员范付明本程序名称为计算器,主要功能是实现简单的数字,运算符号,计算,删除,复位等功能。

掌握计算器的各项基本功能掌握编写计算器程序的所用方法项目目的掌握Swing组件的应用掌握事件的应用 Java编程语言、javaSwing技术主要技术开发环境 _24 项目特点使用组件构建的C/S应用程序各项功能的组织合理搭配应用图标控制功能实现构建基于C/S架构的应用程序技术重点 Swing组件应用事件监听的应用方法的编写Swing组件的应用技术难点事件监听器的使用异常处理方法简便的选择《Java实训》设计报告项目名称一、项目需求本程序的主要功能:单击“计算器”上的数字按钮可以设置参与计算的运算数。

单击“计算器”上的运算符按钮可以选择运算符号。

单击“计算器”上的“=”按钮显示计算结果。

单击“计算器”上的“复位”按钮清空计算结果。

单击“计算器”上的“删除”按钮删除输入的最后一个数字。

二、项目设计在设计计算器时,编写2个Java源文件:、计算器除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。

下面是2个Java源文件的总体设计。

CalculatorWindow类负责创建计算器的主窗口,该类含有main方法,计算器从该类开始执行。

CalculatorWindow 类有4种类型的对象,分别是:LinkedList、NumberButton、JButton、JTextField。

NumberButton类创建的对象是主类CalculatorWindow 窗口的一个“数字”按钮。

NumberButton有一个int类型的成员temp,用于标明所创建的按钮所含有的运算符号。

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

Java计算器实验报告(1)

Java计算器实验报告(1)Java计算器实验报告一、实验目的本实验旨在通过设计一个基于Java语言的计算器程序,以深入了解Java语言的面向对象编程思想及Java Swing界面编程技术,并能够熟练掌握Java语言实现简单的计算器功能。

二、实验环境本实验使用的软件环境为:JDK1.8版本、Eclipse开发工具。

三、实验内容1.设计Java计算器的UI界面通过Java Swing界面编程技术设计出计算器UI界面,包含数字按钮、运算符按钮、等号按钮、清空按钮等基本功能。

2.通过Java语言实现简单的计算器功能在UI界面中通过Java语言代码实现如下计算器功能:(1)数字按键可以输入多位数,并能实现小数点的输入。

(2)运算符按键可实现加、减、乘、除四则运算。

(3)“=”按钮可完成计算,并显示计算结果。

(4)清空按钮可清除显示屏上显示的数据。

四、实验步骤1.设计Java计算器UI界面的步骤(1)使用Swing容器类JFrame创建主窗体。

(2)添加JPanel面板,用于放置数字按钮和运算符按钮。

(3)设计数字按钮和运算符按钮的布局。

(4)通过Swing组件JTextField创建显示屏,并设置其属性。

(5)为数字按钮和运算符按钮添加事件监听器,实现相应的操作。

2.实现计算器功能的步骤(1)将数字及运算符分别存储在两个栈内。

(2)按照栈的特性先入后出,将输入的数字符解析为整数或小数,并放入数字栈内。

(3)当输入运算符时,根据优先级可以决定是否需要进行计算。

(4)若当前输入的运算符优先级小于栈顶运算符优先级,则将栈顶运算符出栈,并从数字栈中取出两个数据进行计算,并将结果存入数字栈中,直到当前输入的运算符优先级大于等于栈顶运算符优先级为止。

(5)等号按钮的实现是将剩余的运算符依次取出,从数字栈中取出两个数字进行计算,计算后的结果存入数字栈中。

(6)清空按钮的实现是将数字栈、运算栈及显示屏内的内容全部清空。

Java程序设计实验1(计算器)报告.doc

Java程序设计实验1(计算器)报告.doc

中南民族大学计算机科学学院Java程序设计实验一报告2014—2015第二学期课程名称: Java程序设计院系:计算机科学学院年级: 2013 专业:计算机科学与技术班级: 1大班小组成员(学号姓名):201321091035 高波 201321091071 王吉201321151065 锁松源指导教师:强小利2015年5月实验一Java 计算器编程1. 实验类型:设计型2. 实验目的(1)熟悉Java编程环境JDK和NetBeans的安装,配置和使用;(2)掌握Java Application的编写及调试;(3)掌握Java图形用户界面的设计及其编程;(4)熟练掌握Java的事件委托处理模型;(5)熟练掌握java.awt包常用类的使用;(6)掌握Java的封装、继承和多态程序设计。

3. 实验任务利用Java编程技术实现一个简单的计算器,具体要求如下:(1)编写一个Java Application,使得程序能提供计算器的一般计算功能,计算器界面如下:(2)使用java.awt.Frame创建一个窗框。

(3)为计算器的每个按钮(button)注册监听器。

(4)利用FlowLayout、BorderLayout、GridLayout设置容器的布局。

(5)利用容器间的嵌套策略来布置整个计算器的界面,充分利用Panel作为中间层容器的优点。

(6)对于带括号的表达式,能够根据优先次序求解表达式的值。

以下为选做功能:(7)能够对大整数进行运算。

4. 组内分工(说明每个成员分工的编程工作)王吉主要负责实现计算器的基本功能包括加减乘除四则运算、倒数、平方根及清除结果等功能。

高波负责通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。

锁松原负责按钮监听,计算器的每个按钮(button)注册监听器。

5. Java源代码import java.awt.*;import java.awt.event.*;import java.util.Stack;import javax.swing.*;public class Calculator extends JFrame implements ActionListener{private JTextField txtResult;private JPanel p;private String name[] = { "7", "8", "9", "+", "4", "5", "6", "-","1", "2", "3", "*", "0", ".", "=", "/", "π", "C", "(", ")" };private JButton button[] = new JButton[name.length];private JMenuBar menuBar;//菜单栏的实现。

Java实验报告计算器

Java实验报告计算器
handleBackspace();
} else if (label.equals(COMMAND[1])) {
//用户按了"CE"键
resultText.setText("0");
} else if (label.equals(COMMAND[2])) {
//用户按了"C"键
handleC();
} else if ("0123456789.".indexOf(label) >= 0) {
/**计算器上的功能键的显示名字*/
private final String[] COMMAND = { "Backspace", "CE", "C" };
/**计算器左边的M的显示名字*/
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", commandsPanel);
panel1.add("Center", calckeysPanel);
//建立一个画板放文本框
JPanel top = new JPanel();
院系:计算机科学学院
专业:
年级:
课程名称:
姓名(学号):
指导教师:
2016年月日
年级
班号
组号
专业
实验名称
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告实验内容:综合课程设计相关课程: Java程序设计学期: 2009-2010学年第2学期学时学分: 48学时 3学分专业班级: xxxxxxxx学号: xxxxxxxxxxx 姓名: xxxxxxx 指导老师: xxx 提交日期: xxxx年 xx月xx日题目JAVA课程设计一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。

信科0821班学生的课程设计主要是Java语言程序设计的实现。

通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。

二、实验环境硬件环境CPU:AMD5000+ 双核主板:华硕M2N-X 显示器:1024x768/256色操作系统:Windows XP;JDK:jdk-6u18-windows-i586;运行环境以及调试软件:JCreator Pro三、实验内容内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。

内容二:设计一个记事本,菜单中要求有文件,编辑,和帮助。

文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。

内容三:编写tic-tac-toe游戏程序。

即 3*3的9个方格子,每人下一次看谁先连成一行3个四、算法分析、设计与描述1.算法分析和设计内容(1)算法分析:首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等,接着可以进行加减乘除等运算,添加“C”、“CE”按钮进行退格和清空操作,清空操作显示“0”,最后在帮助中显示开发人信息。

功能及界面设计:功能1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。

功能2:输入数字后,点击进制转换,可转换成二、八进制;按“exp”“log”键,则进行e次幂运算和自然对数运算;按“tan”“cos”“sin”则进行三角函数运算。

功能3:按“+”“-”“*”“/”分别进行四则运算功能4:在任何时候按下“+/-”键,计算器文本框上的数字置反号。

功能5:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。

再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。

功能6:按下“C”键向前退格,按下“C E”键,数据被全部清除功能7:按下“帮助”键查看制作人信息功能8:按下“选项”键,点“退出”键退出计算器面板设计算法描述选项进制转换帮助(输出区域)sqrt +/- exp C CE 7 8 9 log / 4 5 6 tan * 1 2 3 cos - 0 . = sin +内容(2)算法分析:此程序应当符合大众化,因为记事本是一个常用程序,因此我们常用计算机系统带的记事本进行设计本程序,其功能有以下几个方面:(1)“菜单”中有“文件”,“编辑”,“帮助”三个主菜单。

(2)“文件”中有“新建”,“打开”,“保存”,“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。

(3)“编辑”中有“剪切”,“复制”,“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字。

(4)“帮助”菜单中有“关于”用来显示作者信息计算结果显示接受用户输入是否再次计算退出是否处理异常默认十进制 十六进制八进制开始选择你要计算运行的进制10、8、16进制转换刷新记事本面板设计:文件编辑帮助(文本区)内容(3)算法分析:1初始化游戏,2检查棋子是否布满游戏格局,格局被布满则进行赢者判断,没布满则“X”下棋,3再次检查游戏格局是否被棋子布满,没布满则轮到“O”下棋,且跳到步骤2,若布满格局则进行赢者判断算法描叙:五、程序设计1.程序设计的基本思路 内容(1):计算结果显示区设计private JTextField displayField 保存+,-,*,/,=命令private String lastCommand 保存计算结果private double result 判断是否为数字的开始 private boolean start设置布局、为按钮注册事件监听器 public Calculator()是否占满游戏格局初始化游戏平局是否有玩家赢是否占满游戏输出赢家“O ”下棋“X ”下棋YYNNNY是否有玩家赢NY调用成员方法添加菜单this.addmyMenu()按钮的单击事件处理方法public void actionPerformed(ActionEvent e)退格键的实现方法if(input.equals("C")) {if(str.length()>0)displayField.setText(str.substring(0,str.length()-1)); // 清零键的实现方法input.equals("CE")displayField.setText("0");start=true;内容(2):使用的包如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;为按钮添加行为监听器: ActionListener为按钮添加键盘适配器:KeyListener菜单设计:JMenuBar mbar;JMenu mnuFile, mnuEdit, mnuHelp;JMenuItem fileNew, fileOpen, fileSave, fileExit;JMenuItem editCut, editCopy, editPaste, editSelectAll, editDel;JMenuItem helpAbout;JToolBar tlbr;ImageIcon iconNew, iconOpen, iconSave;ImageIcon iconCut, iconCopy, iconPaste;JButton bttnNew, bttnOpen, bttnSave;JButton bttnCut, bttnCopy, bttnPaste;打开异常处理:catch(Exception ex){JOptionPane.showMessageDialog(this,ex.getMessage(),"打开失败",JOptionPane.ERROR_MESSAGE);}退出异常处理:if(txtChanged){int res;res = JOptionPane.showConfirmDialog(this,"保存更改?","退出",JOptionPane.YES_NO_CANCEL_OPTION);if(res == JOptionPane.YES_OPTION){saveFile();}else if(res == JOptionPane.CANCEL_OPTION){return;}内容(3)创建并且初始化盘区单位private char whoseTurn = 'X';创建并且初始化状态标签private Cell[][] cells = new Cell[3][3];private JLabel jlblStatus = new JLabel("X's turn to play");确认玩家顺序public TicTacToe() {JPanel p = new JPanel(new GridLayout(3, 3, 0, 0));for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)p.add(cells[i][j] = new Cell());判断盘区单位全部是否被棋子占领public boolean isFull() {for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)if (cells[i][j].getToken() == ' ')return false;return true;}判断有指定的象征的玩家胜利public boolean isWon(char token) {for (int i = 0; i < 3; i++)if ((cells[i][0].getToken() == token)&& (cells[i][1].getToken() == token)&& (cells[i][2].getToken() == token)) { return true;}for (int j = 0; j < 3; j++)if ((cells[0][j].getToken() == token)&& (cells[1][j].getToken() == token)&& (cells[2][j].getToken() == token)) { return true;}if ((cells[0][0].getToken() == token)&& (cells[1][1].getToken() == token)&& (cells[2][2].getToken() == token)) { return true;}if ((cells[0][2].getToken() == token)&& (cells[1][1].getToken() == token)&& (cells[2][0].getToken() == token)) { return true;}return false;}2.程序代码内容(1):import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2 ,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_ 0,button_plus,button_minus,button_multiply,button_divide,button_poin t,button_equal,button_log,button_tan,button_cos,button_sin,button_ex p;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4));JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");button_exp=new JButton("exp");button_CE=new JButton("C");button_cancel=new JButton("CE");JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4));this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4));this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4));this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4));this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("作者");m3_Help.addActionListener(this);dialog = new Dialog(this,"关于",true); //模式窗口 dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)|| e.getSource().equals(button_6)||e.getSource().equals(button_7)|| e.getSource().equals(button_8)||e.getSource().equals(button_9) ||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_pl usminus)||e.getSource().equals(button_cancel)||e.getSource().equals(button_C E)){ //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("C")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("CE")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getText()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if (e.getActionCommand()=="作者") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setText("熊瑛琪制作 \n学号:080320618");dialog.setLocation(400,250);dialog.setVisible(true);}else //各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法{double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框elseSystem.exit(0);}public void windowOpened(WindowEvent e) { }public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) { }public void windowClosed(WindowEvent e) { }public void windowIconified(WindowEvent e) { }public void windowDeiconified(WindowEvent e) { }public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}内容(2):import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;class MyPad extends JFrame implements ActionListener, KeyListener {boolean txtChanged = false;String fname = "";JMenuBar mbar;JMenu mnuFile, mnuEdit, mnuHelp;JMenuItem fileNew, fileOpen, fileSave, fileExit;JMenuItem editCut, editCopy, editPaste, editSelectAll, editDel; JMenuItem helpAbout;JToolBar tlbr;ImageIcon iconNew, iconOpen, iconSave;ImageIcon iconCut, iconCopy, iconPaste;JButton bttnNew, bttnOpen, bttnSave;JButton bttnCut, bttnCopy, bttnPaste;JTextArea txtPad;Container c;MyPad(){initComponents();setTitle("MyPad");setSize(400,300);setVisible(true);setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WinHandler());}void initComponents(){c = getContentPane();c.setLayout(new BorderLayout());initMenu();txtPad = new JTextArea();Font f = new Font("Comic Sans MS", Font.PLAIN, 20);txtPad.setFont(f);txtPad.addKeyListener(this);JScrollPane jscroll = new JScrollPane(txtPad);c.add(jscroll, BorderLayout.CENTER);}void initMenu(){mbar = new JMenuBar();mnuFile = new JMenu("文件");mnuEdit = new JMenu("编辑");mnuHelp= new JMenu("帮助");fileNew = new JMenuItem("新建");fileOpen= new JMenuItem("打开");fileSave= new JMenuItem("保存");fileExit = new JMenuItem("退出");editCut = new JMenuItem("剪切");editCopy= new JMenuItem("复制");editPaste = new JMenuItem("黏贴");editSelectAll = new JMenuItem("全选");editDel= new JMenuItem("删除");helpAbout= new JMenuItem("关于");mnuFile.add(fileNew);mnuFile.add(fileOpen);mnuFile.add(fileSave);mnuFile.add(fileExit);mnuEdit.add(editCut);mnuEdit.add(editCopy);mnuEdit.add(editPaste);mnuEdit.addSeparator();mnuEdit.add(editSelectAll);mnuEdit.add(editDel);mnuHelp.add(helpAbout);mbar.add(mnuFile);mbar.add(mnuEdit);mbar.add(mnuHelp);setJMenuBar(mbar);fileNew.addActionListener(this);fileOpen.addActionListener(this);fileSave.addActionListener(this);fileExit.addActionListener(this);editCut.addActionListener(this);editCopy.addActionListener(this);editPaste.addActionListener(this);editSelectAll.addActionListener(this);editDel.addActionListener(this);helpAbout.addActionListener(this);}public void actionPerformed(ActionEvent e){Object src = e.getSource();if(src.equals(bttnNew) || src.equals(fileNew)){newFile();}else if(src.equals(bttnOpen) || src.equals(fileOpen)) {openFile();}else if(src.equals(bttnSave) || src.equals(fileSave)) {saveFile();}else if(src.equals(fileExit)){exitFile();}else if(src.equals(bttnCut) || src.equals(editCut)) {txtPad.cut();}else if(src.equals(bttnCopy) || src.equals(editCopy)) {txtPad.copy();}else if(src.equals(bttnPaste) || src.equals(editPaste)) {txtPad.paste();}else if(src.equals(editSelectAll)){txtPad.selectAll();}else if(src.equals(editDel)){txtPad.replaceSelection("");}else if(src.equals(helpAbout)){aboutHelp();}}void newFile(){if(txtChanged){int res;res = JOptionPane.showConfirmDialog(this,"保存修改?","新建文件",JOptionPane.YES_NO_CANCEL_OPTION);if(res == JOptionPane.YES_OPTION){saveFile();}else if(res == JOptionPane.CANCEL_OPTION){return;}}fname = "";txtChanged = false;txtPad.setText("");}void saveFile(){if(fname.equals("")){JFileChooser jfc = new JFileChooser();int res;res = jfc.showSaveDialog(this);if(res == jfc.APPROVE_OPTION){fname = jfc.getSelectedFile().getAbsolutePath(); }else{return;}}try{FileWriter fw = new FileWriter(fname);fw.write(txtPad.getText());fw.flush();fw.close();txtChanged = false;}catch(Exception ex){JOptionPane.showMessageDialog(this,ex.getMessage(),"保存失败",JOptionPane.ERROR_MESSAGE);}}void openFile(){int res;JFileChooser jfc = new JFileChooser("c:/");res = jfc.showOpenDialog(this);if(res == jfc.APPROVE_OPTION){fname = jfc.getSelectedFile().getAbsolutePath();try{FileReader fr = new FileReader(fname); BufferedReader br = new BufferedReader(fr);txtPad.setText("");String s;while( (s = br.readLine()) != null ){txtPad.append(s);txtPad.append("\n");}br.close();fr.close();}catch(Exception ex){JOptionPane.showMessageDialog(this,ex.getMessage(),"打开失败",JOptionPane.ERROR_MESSAGE);}}}void exitFile(){if(txtChanged){int res;res = JOptionPane.showConfirmDialog(this,"保存更改?","退出",JOptionPane.YES_NO_CANCEL_OPTION);if(res == JOptionPane.YES_OPTION){saveFile();}else if(res == JOptionPane.CANCEL_OPTION) {return;}}dispose();}void aboutHelp(){new HelpDlg(this);}public void keyPressed(KeyEvent e){}public void keyReleased(KeyEvent e){}public void keyTyped(KeyEvent e){txtChanged = true;}class WinHandler extends WindowAdapter {public void windowClosing(WindowEvent e) {exitFile();}}public static void main(String args[]) {MyPad mp = new MyPad();}}class HelpDlg extends JDialog{public HelpDlg(MyPad m){JOptionPane.showOptionDialog(null,"程序名称:\n MyPad \n" +"程序设计:\n 熊瑛琪 \n","制作人",JOptionPane.DEFAULT_OPTION,RMATION_MESSAGE,null, null, null);setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}内容(3):import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.LineBorder;public class TicTacToe extends JApplet {// 表明哪个玩家的顺序,最初它是X玩家private char whoseTurn = 'X';// 创建并且初始化盘区单位private Cell[][] cells = new Cell[3][3];// 创建并且初始化状态标签private JLabel jlblStatus = new JLabel("X's turn to play");public TicTacToe() {// 利用p来确认玩家顺序JPanel p = new JPanel(new GridLayout(3, 3, 0, 0));for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)p.add(cells[i][j] = new Cell());// 设置在单位盘区和状态标签的边界线p.setBorder(new LineBorder(Color.red, 1));jlblStatus.setBorder(new LineBorder(Color.yellow, 1));// 安置盘区和标签的附属程序add(p, BorderLayout.CENTER);add(jlblStatus, BorderLayout.SOUTH);}/** 确定盘区单位全部是否被占领 **/public boolean isFull() {for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)if (cells[i][j].getToken() == ' ')return false;return true;}/** 判断有指定的象征的玩家胜利 **/public boolean isWon(char token) {for (int i = 0; i < 3; i++)if ((cells[i][0].getToken() == token)&& (cells[i][1].getToken() == token)&& (cells[i][2].getToken() == token)) {return true;}for (int j = 0; j < 3; j++)if ((cells[0][j].getToken() == token)&& (cells[1][j].getToken() == token)&& (cells[2][j].getToken() == token)) {return true;}if ((cells[0][0].getToken() == token)&& (cells[1][1].getToken() == token)&& (cells[2][2].getToken() == token)) {return true;}if ((cells[0][2].getToken() == token)&& (cells[1][1].getToken() == token)&& (cells[2][0].getToken() == token)) {return true;}return false;}// 单位区的类public class Cell extends JPanel {// 单位区域象征private char token = ' ';public Cell() {setBorder(new LineBorder(Color.black, 1)); // 设置单位区的颜色addMouseListener(new MouseListener()); // 注册计数器}/** 单位区的返回 **/public char getToken() {return token;}/** 设置一个新的象征 */public void setToken(char c) {token = c;repaint();}/** 设置单位区域 */protected void paintComponent(Graphics g) {super.paintComponent(g);if (token == 'X') {g.drawLine(10, 10, getWidth() - 10, getHeight() - 10);g.drawLine(getWidth() - 10, 10, 10, getHeight() - 10);}else if (token == 'O') {g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);}}private class MouseListener extends MouseAdapter {/** 处理鼠标事件 */public void mouseClicked(MouseEvent e) {// 如果单位区域非满则比赛继续if (token == ' ' && whoseTurn != ' ') {setToken(whoseTurn); // 设置象征// 检查游戏进程if (isWon(whoseTurn)) {jlblStatus.setText(whoseTurn + " won! The game is over"); whoseTurn = ' '; // 游戏结束}else if (isFull()) {jlblStatus.setText("Draw! The game is over");whoseTurn = ' '; // 游戏结束}else {whoseTurn = (whoseTurn == 'X') ? 'O': 'X'; // 改变顺序 jlblStatus.setText(whoseTurn + "'s turn"); // 显示顺序 }}}}}/** 使附属程序运行应用程序的方法 **/public static void main(String[] args) {// 创建框架JFrame frame = new JFrame("TicTacToe");// 创造附属程序的实例TicTacToe applet = new TicTacToe();// 增加附属程序事例到框架frame.add(applet, BorderLayout.CENTER);// 框架大小frame.setSize(400, 400);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}六、程序运行、调试和结果分析1.程序运行中出现的问题及调试手段(包括异常处理)内容(1):在对程序进行测试时发现“sin”函数出现异常点击“sin”然后输入“90”出现以下情况经过对程序代码的检查发现在下面方法中public void calculate(double x) //各运算符的具体运算方法{double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")) {d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}displayField.setText(""+ result);}发现遗漏以下代码else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}修改后再次进行测试输入“1.5707963”(约为0.5*pi)再键入“sin”得以下结果可见程序修改成功内容(2):在测试中发现程序无法实现“编辑”菜单中的“全选”项,经检查后发现问题出现在1.public void actionPerformed(ActionEvent e)2.{3.Object src = e.getSource();4.if(src.equals(bttnNew) || src.equals(fileNew))5.{6.newFile();7.}8.else if(src.equals(bttnOpen) || src.equals(fileOpen))9.{10.openFile();11.}12.else if(src.equals(bttnSave) || src.equals(fileSave))13.{14.saveFile();15.}16.else if(src.equals(fileExit))17.{18.exitFile();19.}20.else if(src.equals(bttnCut) || src.equals(editCut))21.{22.txtPad.cut();23.}24.else if(src.equals(bttnCopy) || src.equals(editCopy))25.{26.txtPad.copy();27.}28.else if(src.equals(bttnPaste) || src.equals(editPaste))29.{30.txtPad.paste();31.}32.else if(src.equals(editDel))33.{txtPad.replaceSelection("");34.}35.else if(src.equals(helpAbout))36.{37.aboutHelp();38.}39.}在第31行代码后一行缺少else if(src.equals(editSelectAll)){txtPad.selectAll();}进行修改后再测试发现修改成功内容(3):在程序编译时出现如下情况--------------------配置: <默认>--------------------C:\Documents and Settings\qi\桌面\新建文件夹\TicTacToe.java:39: 需要 ';'return true^1 错误处理已完成。

相关文档
最新文档