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编程语言设计并实现一个简单的计算器。

二、实验目的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简易计算器实训报告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语言的基本语法和面向对象编程的思想,还加深了对数据结构和逆波兰表达式的理解。

Java计算器实验报告-V1

Java计算器实验报告-V1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java计算器设计实验报告

java计算器设计实验报告

java计算器设计实验报告Java计算器设计实验报告引言:计算器是人们日常生活中常见的工具之一,它能够进行基本的数学运算,方便人们进行快速计算。

本实验旨在通过使用Java编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(完整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.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class jsq implements ActionListener { //导入动作监听接口//设计面板中的单位JFrame frame;//窗口JTextField textAnswer;//文本JPanel panel, panel1, panel2, panel3;//面版JMenuBar mainMenu;//菜单JTextField textMemory;JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状JButton buttonBk, buttonCe, buttonC;JButton button[];//按钮数组JButton buttonMC, buttonMR, buttonMS, buttonMAdd;//清除,使用,储存,添加JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonMod;JButton buttonSqrt, buttonDao, buttonEqual;JMenu editMenu, viewMenu, helpMenu;JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup,topHelp,aboutCal;DecimalFormat df; //设置数据输出精度boolean clickable; //控制当前能否按键double memoryd; //使用内存中存储的数字int memoryi;double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算String copy; //做复制用JTextArea help; //帮助JScrollPane scrollHelp;//构造函数public jsq() {clickable = true;answerd = 0;frame = new JFrame("计算器");df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)textAnswer = new JTextField(15);textAnswer.setText("");textAnswer.setEditable(false);textAnswer.setBackground(new Color(255, 255, 255));panel = new JPanel();frame.getContentPane().add(panel);panel1 = new JPanel();panel2 = new JPanel();panel.setLayout(new BorderLayout());//设计整个面板mainMenu = new JMenuBar();editMenu =new JMenu("编辑(E)");editMenu .setMnemonic(KeyEvent.VK_E);viewMenu =new JMenu("查看(V)");viewMenu .setMnemonic(KeyEvent.VK_V);helpMenu =new JMenu("帮助(H)");helpMenu .setMnemonic(KeyEvent.VK_H);mainMenu .add(editMenu );mainMenu .add(viewMenu );mainMenu .add(helpMenu );panel.add(mainMenu, BorderLayout.NORTH);panel.add(textAnswer, BorderLayout.CENTER);panel.add(panel1, BorderLayout.SOUTH);panel1.setLayout(new BorderLayout());textMemory = new JTextField(3);textMemory.setEditable(false);textMemory.setBackground(new Color(217, 217, 217));labelMemSpace = new JLabel(" ");buttonBk = new JButton("Backspace");buttonBk.setForeground(new Color(255, 0, 0));buttonCe = new JButton("CE");buttonCe.setForeground(new Color(255, 0, 0));buttonC = new JButton("C");buttonC.setForeground(new Color(255, 0, 0));buttonBk.addActionListener(this);buttonCe.addActionListener(this);buttonC.addActionListener(this);panel1.add(panel2, BorderLayout.NORTH);panel2.setLayout(new FlowLayout(FlowLayout.RIGHT));panel2.add(textMemory);panel2.add(labelMemSpace);panel2.add(buttonBk);panel2.add(buttonCe);panel2.add(buttonC);panel3 = new JPanel();panel1.add(panel3, BorderLayout.CENTER);button = new JButton[10];for (int i = 0; i < button.length; i++) {button[i] = new JButton(Integer.toString(i));button[i].setForeground(new Color(0, 0, 255));}//构造按钮buttonMC = new JButton("MC");buttonMC.setForeground(new Color(255, 0, 0));buttonMR = new JButton("MR");buttonMR.setForeground(new Color(255, 0, 0));buttonMS = new JButton("MS");buttonMS.setForeground(new Color(255, 0, 0));buttonMAdd = new JButton("M+");buttonMAdd.setForeground(new Color(255, 0, 0));buttonDot = new JButton(".");buttonDot.setForeground(new Color(0, 0, 255));buttonAddAndSub = new JButton("+/-");buttonAddAndSub.setForeground(new Color(0, 0, 255));buttonAdd = new JButton("+");buttonAdd.setForeground(new Color(255, 0, 0));buttonSub = new JButton("-");buttonSub.setForeground(new Color(255, 0, 0));buttonMul = new JButton("*");buttonMul.setForeground(new Color(255, 0, 0)); buttonDiv = new JButton("/");buttonDiv.setForeground(new Color(255, 0, 0)); buttonMod = new JButton("%");buttonMod.setForeground(new Color(0, 0, 255)); buttonSqrt = new JButton("sqrt");buttonSqrt.setForeground(new Color(0, 0, 255)); buttonDao = new JButton("1/x");buttonDao.setForeground(new Color(0, 0, 255)); buttonEqual = new JButton("=");buttonEqual.setForeground(new Color(255, 0, 0)); //将所有行为与监听绑定panel3.setLayout(new GridLayout(4, 6));panel3.add(buttonMC);buttonMC.addActionListener(this);panel3.add(button[7]);button[7].addActionListener(this);panel3.add(button[8]);button[8].addActionListener(this);panel3.add(button[9]);button[9].addActionListener(this);panel3.add(buttonDiv);buttonDiv.addActionListener(this);panel3.add(buttonSqrt);buttonSqrt.addActionListener(this);panel3.add(buttonMR);buttonMR.addActionListener(this);panel3.add(button[4]);button[4].addActionListener(this);panel3.add(button[5]);button[5].addActionListener(this);panel3.add(button[6]);button[6].addActionListener(this);panel3.add(buttonMul);buttonMul.addActionListener(this);panel3.add(buttonMod);buttonMod.addActionListener(this);panel3.add(buttonMS);buttonMS.addActionListener(this);panel3.add(button[1]);button[1].addActionListener(this);panel3.add(button[2]);button[2].addActionListener(this);panel3.add(button[3]);button[3].addActionListener(this);panel3.add(buttonSub);buttonSub.addActionListener(this);panel3.add(buttonDao);buttonDao.addActionListener(this);panel3.add(buttonMAdd);buttonMAdd.addActionListener(this);panel3.add(button[0]);button[0].addActionListener(this);panel3.add(buttonAddAndSub);buttonAddAndSub.addActionListener(this);panel3.add(buttonDot);buttonDot.addActionListener(this);panel3.add(buttonAdd);buttonAdd.addActionListener(this);panel3.add(buttonEqual);buttonEqual.addActionListener(this);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.show();}//设置各个按钮行为public void actionPerformed(ActionEvent event) {boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try {//如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后for (int i = 0; i <= 9; i++)if (temp == button[i] && clickable == true)textAnswer.setText(textAnswer.getText() + Integer.toString(i));//按下"."按钮时,判断当前文本框内字符串中含不含".",如果已含,则不允许再插入"."if (temp == buttonDot && clickable == true) {boolean isDot = false;if (textAnswer.getText().length() == 0) isDot = true;for(int i = 0; i < textAnswer.getText().length(); i++)if ('.' == textAnswer.getText().charAt(i)) { isDot = true;break;}if (isDot == false)textAnswer.setText(textAnswer.getText() + ".");}if ((temp == buttonAdd || temp == buttonSub || temp == buttonMul || temp == buttonDiv)&& clickable == true) {//"+"操作if (temp == buttonAdd) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if (Double.parseDouble(textAnswer.getText()) == 0) {//textAnswer="aa";textAnswer.setText("除数不能为零");clickable = false;} elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 0;}//"-"操作if (temp == buttonSub) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if (Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;} elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 1;}//"*"操作if (temp == buttonMul) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if (Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;} elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}//textAnser = "";textAnswer.setText("");prekey = key = 2;}//"/"操作if (temp == buttonDiv) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if (Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;} elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 3;}}//"="操作if (temp == buttonEqual && clickable == true) {//如果连续按"=",则进行连续运算if (prekey == 5) {if (key == 0) {answerd += vard;textAnswer.setText(df.format(answerd));}if (key == 1) {answerd -= vard;textAnswer.setText(df.format(answerd));}if (key == 2) {answerd *= vard;textAnswer.setText(df.format(answerd));}if (key == 3) {if (Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;} else {answerd /= vard;textAnswer.setText(df.format(answerd));}}} else {vard = Double.parseDouble(textAnswer.getText());if (key == 0) {prekey = -1;answerd +=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 1) {prekey = -1;answerd -=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 2) {prekey = -1;answerd *=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 3) {prekey = -1;if (Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;} else {answerd /=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}}}prekey = 5;}//"%"操作,对第二个操作数除以100if (temp == buttonMod && clickable == true) {if (answerd == 0) {String s = textAnswer.getText();textAnswer.setText(s);} else {boolean isDot = false;for (int i = 0; i < textAnswer.getText().length(); i++)if ('.' == textAnswer.getText().charAt(i)) { isDot = true;break;}//如果是double数,除100if (isDot == true) {double dtemp =Double.parseDouble(textAnswer.getText());dtemp = dtemp / 100.0;textAnswer.setText(Double.toString(dtemp));} else {//如果是int数但能被100整除,则去掉末尾两个零if (Integer.parseInt(textAnswer.getText()) % 100 == 0) {int itemp =Integer.parseInt(textAnswer.getText());itemp /= 100;textAnswer.setText(Integer.toString(itemp));}//如果是int数,但不能被100整除,则按double数处理else {double dtemp = Double.parseDouble(textAnswer .getText());dtemp = dtemp / 100.0;textAnswer.setText(Double.toString(dtemp));}}}}//开根号运算if (temp == buttonSqrt && clickable == true) { String s = textAnswer.getText();if (s.charAt(0) == '-') {textAnswer.setText("负数不能开根号");clickable = false;} elsetextAnswer.setText(Double.toString(ng.Math .sqrt(Double.parseDouble(textAnswer.getTex t()))));}//倒数运算if (temp == buttonDao && clickable == true) {if (textAnswer.getText().charAt(0) == '0' && textAnswer.getText().length() == 1) {textAnswer.setText("零不能求倒数");clickable = false;} else {boolean isDec = true;int i, j, k;String s = Double.toString(1 / Double.parseDouble(textAnswer.getText()));for (i = 0; i < s.length(); i++)if (s.charAt(i) == '.')break;for (j = i + 1; j < s.length(); j++)if (s.charAt(j) != '0') {isDec = false;break;}if (isDec == true) {String stemp = "";for (k = 0; k < i; k++)stemp += s.charAt(k);textAnswer.setText(stemp);} elsetextAnswer.setText(s);}}//按下"+/-"按钮时处理if (temp == buttonAddAndSub && clickable == true) {boolean isNumber = true;String s = textAnswer.getText();for (int i = 0; i < s.length(); i++)if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.'|| s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {textAnswer.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetextAnswer.setText('-' + s);}}//计算器有关内存操作//'MC'的操作,将内存清0if (temp == buttonMC && clickable == true) {memoryd = memoryi = 0;textMemory.setText("");}//'MS'的操作,将当前文本框内容保存入内存,显示'M'if (temp == buttonMS && clickable == true) {boolean isDot = false;textMemory.setText(" M");for(int i = 0; i < textAnswer.getText().length(); i++)if ('.' == textAnswer.getText().charAt(i)) { isDot = true;break;}//如果是double,则存入memoryd(double存储器)if (isDot == true) {memoryd =Double.parseDouble(textAnswer.getText());memoryi = 0; //保证存储器中存放最新的值}//如果是int,则存入memoryi(int存储器)else {memoryi = Integer.parseInt(textAnswer.getText());memoryd = 0; //保证存储器中存放最新的值}}//'MR'的操作,将存储器中的信息输出if (temp == buttonMR && clickable == true) {if (memoryd != 0)textAnswer.setText(Double.toString(memoryd));if (memoryi != 0)textAnswer.setText(Integer.toString(memoryi));}//'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器if (temp == buttonMAdd && clickable == true) {boolean isDot = false;for(int i = 0; i < textAnswer.getText().length(); i++)if ('.' == textAnswer.getText().charAt(i)) { isDot = true;break;}if (memoryi != 0) { //存储中是一个int型数if (isDot == false) //被加数是一个int型数memoryi +=Integer.parseInt(textAnswer.getText());else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi+Double.parseDouble(textAnswer.getText());memoryi = 0;}} elsememoryd +=Double.parseDouble(textAnswer.getText());}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == buttonBk && clickable == true) { String s = textAnswer.getText();textAnswer.setText("");for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == buttonCe) {textAnswer.setText("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == buttonC) {vard = answerd = 0;textAnswer.setText("");clickable = true;}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e) {textAnswer.setText("操作非法");clickable = false;}}//主函数public static void main(String args[]) {new jsq();}}五、程序运行结果演示计算器界面7+8清除9-47*88/4储存使用储存值清除储存值2的倒数5的百分9的开方六、总结通过本次实验让我对JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法,有了进一步的了解。

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课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本

Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本

优劣。

知识点:掌握事件处理机制;掌握随机采样的方法;掌握图形用户界面设计;(注:采用图形用户方式设计)4、内容四:设计一个记事本,菜单中要求有文件,编辑,和帮助。

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

知识点:掌握图形用户界面设计;掌握基本类的设计与菜单设计;掌握事件处理机制;掌握使用异常处理方法。

5、内容五:一个多线程的动画知识点:Java中线程的实现;线程的优先级、调度与同步;设计步骤:窗口布局设计设计线程类MainPanel类的设计实验效果为:程序功能:每点击一次“Start”按钮,就会在画面上出现一个新的小球。

这些小球按照一定的线路移动,而且小球的移动速度是相同的。

进制转换算法描述:用if语句判断选中的进制对应的选择框(默认选中的是十进制),并对该事件做对应的按钮处理,用变量length判断上次选中的是哪个进制的选择框,用来进行相互转换,然后进行运算。

假如是非十进制,则先转化成十进制,然后再转化成需要的进制。

内容二:用while循环对文件按行读取存放到字符型变量s里,只要s不为null则循环,在循环里加一个计数器count,用于记录文件的行数用于求平均值,每行按分隔符\t进行行的分割,把每行的第i个元素累加到浮点型数组sum[i]里,读取完后在进行求平均值的运算。

最后打印出每列总和及每列平均值。

内容三:按钮界面:黄金卡中要设计到相应的一个开始游戏的按钮和一个重新开始的按钮,我采用的是JButton,分别建立的一个有“开始”和“重玩”文字的按钮。

文本框设计:用JTextField来构建相应的文本框,用JTextField()来构建单行文本框,以满足程序的要求和图形设计。

颜色背景及字体的设定:JLabel 对象可以显示文本、图像或同时显示二者。

内容四:记事本设计图如下,前先要创建一个Jishiben的类继承JFrame类作为最底层的容器。

在构建Jishiben类时要初使化容器,初使化组件。

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程序设计学期: 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”则进行三角函数运算。

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

是否占满 游戏格局
N “X”下棋
Y
Y
是否占 满游戏
N
“O”下棋
是否有 玩家赢
平局
N Y
N Y
输出赢家
是否有 玩家赢
五、程序设计
1.程序设计的基本思路 内容(1): 计算结果显示区设计 private JTextField displayField 保存+,-,*,/,=命令 private String lastCommand 保存计算结果 private double result 判断是否为数字的开始 private boolean start 设置布局、为按钮注册事件监听器 public Calculator()
button_plus,button_minus,button_multiply,button_divide,button_poin t,
button_equal,button_log,button_tan,button_cos,button_sin,button_ex p;
创建并且初始化状态标签 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++)
二、实验环境
硬 件 环 境 CPU : AMD5000+ 双 核 主 板 : 华 硕 M2N-X 显 示 器 :
1024x768/256 色 操作系统:Windows XP;JDK:jdk-6u18-windows-i586; 运行环境以及调试软件:JCreator Pro
三、实验内容 内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、 除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制) 之间的相互转换。
计算器面板设计
选项
进制转换 帮助 (输出区域)
sqrt +/- exp
C
CE
7
8
9
log
/
4
5
6
tan
*
1
2

3
cos
-
0
.
=
sin
+
算法描述
-3-
开始 选择你要计算运行的进制 10、8、16
进制转换
八进制 处理异常
默认十进制 计算结果显示
十六进制 接受用户输入
否 退出
是否再 次计算

刷新
内容(2) 算法分析:此程序应当符合大众化,因为记事本是一个常用程序, 因此我们常用计算机系统带的记事本进行设计本程序,其功能有以下几 个方面: (1)“菜单”中有“文件”,“编辑”,“帮助”三个主菜单。 (2)“文件”中有“新建”,“打开”,“保存”,“退出”四个子菜 单:分别用于新建文件,打开文件,保存文件,退出记事本。 (3)“编辑”中有“剪切”,“复制”,“粘贴”三个子菜单:用于剪 切文字,复制文字,粘贴文字。 (4)“帮助”菜单中有“关于”用来显示作者信息
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,
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; }
清零键的实现方法
input.equals("CE")
displayField.setText("0");
start=true;
内容(2):
使用的包如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
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)) {
-7-
this, ex.getMessage(), "打开失败", JOptionPane.ERROR_MESSAGE ); } 退出异常处理: if(txtChanged) { int res; res = JOptionPane.showConfirmDialog ( this, "保存更改?", "退出", JOptionPane.YES_NO_CANCEL_OPTION );
for (int j = 0; j < 3; j++) p.add(cells[i][j] = new Cell());
判断盘区单位全部是否被棋子占领 public boolean isFull() {
-8-
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (cells[i][j].getToken() == ' ') return false;
-1-
题目 JAVA 课程设计
一、实验目的
通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、 二是提高综合素质和能力。信科 0821 班学生的课程设计主要是 Java 语言 程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与 处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知 识的综合运用能力。
为按钮添加行为监听器: 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 (
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; }
if(res == JOptionPane.YES_OPTION) { saveFile(); } else if(res == JOptionPane.CANCEL_OPTION) { return; }
内容(3) 创建并且初始化盘区单位 private char whoseTurn = 'X';
-4-
记事本面板设计: 文件 编辑 帮助 (文本区)
内容(3) 算法分析: 1 初始化游戏,2 检查棋子是否布满游戏格局,格局被布满则进行赢者 判断,没布满则“X”下棋,3 再次检查游戏格局是否被棋子布满,没布满 则轮到“O”下棋,且跳到步骤 2,若布满格局则进行赢者判断
-5-
算法描叙: 初始化游戏
内容二:设计一个记事本,菜单中要求有文件,编辑,和帮助。文 件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中 显示开发人和版本信息。
内容三:编写 tic-tac-toe 游戏程序。即 3*3 的 9 个方格子,每人 下一次看谁先连成一行 3 个
四、算法分析、设计与描述 1.算法分析和设计
return true; }
return false; }
2.程序代码 内容(1):
相关文档
最新文档