四则运算程序-Java程序设计
- 格式:doc
- 大小:869.50 KB
- 文档页数:17
简易计算器【案例介绍】1.案例描述本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。
2.运行结果运行结果【案例目标】●学会分析“简易计算器”程序实现的逻辑思路。
●能够独立完成“简易计算器”程序的源代码编写、编译及运行。
●掌握Java Swing界面编程的应用。
●了解计算器逻辑运算实现。
【案例分析】要制作一个计算器,首先要知道它由哪些部分组成,如下图所示:一个简单的图形化界面计算器,需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。
实现一个简易图形化界面计算器可分以下几个步骤:1.UI组件创建和初始化:包括窗体的创建,显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。
2.在窗体中添加UI组件:包括放置数字键及运算符面板、放置清除框面板。
3.布局结束之后,就是计算器的难点:编写事件处理程序。
4.按键的响应实现。
5.计算逻辑的实现。
6.注册监听器【案例实现】Calculator.java1 package chapter1102;2 import java.awt.*;3 import java.awt.event.*;4 import javax.swing.*;5 import java.util.Vector;6 import java.math.BigDecimal;7 public class Calculator {8 // 操作数1,为了程序的安全,初值一定设置,这里我们设置为0。
9 String str1 = "0";10 // 操作数211 String str2 = "0";12 // 运算符13 String signal = "+";14 // 运算结果15 String result = "";16 // 以下k1至k5为状态开关17 // 开关1用于选择输入方向,将要写入str1或str218 // 为 1 时写入 str1,为 2 时写入 str219 int k1 = 1;20 // 开关 2 用于记录符号键的次数21 // 如果 k2>1 说明进行的是 2+3-9+8 这样的多符号运算22 int k2 = 1;23 // 开关3用于标识 str1 是否可以被清 024 // 等于 1 时可以,不等于1时不能被清025 int k3 = 1;26 // 开关4用于标识 str2 是否可以被清 027 // 等于 1 时可以,不等于1时不能被清028 int k4 = 1;29 // 开关5用于控制小数点可否被录入30 // 等于1时可以,不为1时,输入的小数点被丢掉31 int k5 = 1;32 // store的作用类似于寄存器,用于记录是否连续按下符号键33 JButton store;34 //vt 存储之前输入的运算符。
四则运算计算器设计说明书一.设计目标本次计算器的程序设计,通过使用JA V A中的AWT包和Swing包的类库设计图形界面的计算器。
此计算器能够完成加减乘除的四则混合运算。
利用面向对象程序设计的思想,将各个组件的事件响应分别用不同的方式表达出来,并且使用了图形界面中的事件委托机制来处理事件响应。
二.设计流程1. 分析该计算器需要完成的功能。
用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。
同时还完成了计算器中C按钮清屏功能和Backspace退格键。
2. 考虑异常处理。
(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。
(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显示“对不起,您没有任何输入,请重新输入:”。
(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce 键,Backspace键时提示错误。
4. 考虑数据的处理目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通过调用JA V A中script这个包中的相关类和方法来实现数据的处理。
5. 编码实现计算器的功能。
(1)新建相关的文件。
(2)引入JA V A中相关的包。
(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。
(5)对所创建的组件进行布局,完成界面的实现。
(6)为各个组件添加事件监听器。
(7)重写事件接口ActionListener的方法public void actionPerformed(ActionEvent e)。
(8)为各个组件编写事件代码,完成每个按钮的不同功能。
三.测试过程的截图1. 程序初始运行界面2运算测试3.混合运算测试:异常处理测试:1.输入错误的表达式2、除数为0时:四.设计结果此计算器以完成设计,所有功能都以实现,并达到了预想的设计目标。
java随机出题四则运算作业要求来源于:我的github地址:https:///kdaysl/fshost/blob/master/mar.java⼀、需求分析 具体要求:任何编程语⾔都可以,命令⾏程序接受⼀个数字输⼊,然后输出相应数⽬的四则运算题⽬和答案。
例如输⼊数字是 30,那就输出 30 道题⽬和答案。
运算式⼦必须⾄少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。
并且要求能处理⽤户的输⼊,并判断对错,打分统计。
⼆、功能设计 1. 输出相应数⽬的四则运算(加减乘除)题⽬及答案; 2. 随机产⽣具有三个操作数和两个运算符的四则运算; 3. 四则运算的答案不能为负数,如果为负数则重新输⼊该道题⽬; 4. 对⽤户的输⼊答案进⾏判断,正确则加分,错误则不加分,并予以提⽰。
满分为100分; 5. 输出⽤户的总分数。
_____________________________________________________________________________________________________________________________________________________________三、详细设计 1. 由于时间问题使⽤嵌套switch来完成多步计算 1.1随机产⽣前两个数字并和第⼀个运算符:front = random.nextInt(100);back = random.nextInt(100);symbol = random.nextInt(4); 2.1嵌套switch-外:switch (Symbol) {case 0:{sSymbol = random.nextInt(4);end = random.nextInt(100);switch (ssymbol){...}case 1:{while (front < back) {front = random.nextInt(100);back = random.nextInt(100);}sSymbol = random.nextInt(4);end = random.nextInt(100);switch (ssymbol){...}break;}case 2:{sSymbol = random.nextInt(4);end = random.nextInt(100);switch (ssymbol){...}break;}case 3:{if (back == 0) {back = random.nextInt(99) + 1;}while (front % back != 0) {front = random.nextInt(100);back = random.nextInt(99) + 1;}sSymbol = random.nextInt(4);end = random.nextInt(100);switch (ssymbol){...}break;}}} 2.2switch嵌套-⾥,switch (sSymbol){case 0:{...inResult = input.nextInt();corResult = front / back +end;if (inResult == corResult)correct++;else {...}break;}case 1:{...inResult = input.nextInt();corResult = front / back -end;if (inResult == corResult)correct++;else {...}break;}case 2:{...inResult = input.nextInt();corResult = front / back -end;if (inResult == corResult)correct++;else {...}break;}case 3:{if (end == 0) {end = random.nextInt(100);}while ((front + back)% end != 0) {front = random.nextInt(100);back = random.nextInt(100);end = random.nextInt(99) + 1;}...inResult = input.nextInt();corResult = front / back / end;if (inResult == corResult)correct++;else {...}break;}} 31.错题录⼊数组errorSymbol[j] = ( front + "/" + back +"/"+end+ "="+corResult); errorId[k] = i + 1; 3.2⽤户输⼊答案对⽐Scanner input = new Scanner(System.in);inResult = input.nextInt();corResult...if (inResult == corResult){...}四、过程耗时估计统计表PSP2.1Personal SoftwareProcess Stages Time SeniorStuden(h)Time(h)Planning计划0.10.1 Estimate估计这个任务需要多少时间11 Development开发23 Analysis需求分析0.10 Design Spec⽣成设计⽂档00 DesignReview设计复审00CodingStandard代码规范00 Design具体设计1 1.5 Coding具体编码23 Code Review代码复审00 Test测试(⾃我测试,修改代码,提交修改)11 Reporting报告00测试报告00计算⼯作量23并提出过程修改计划00。
Java+SpringBoot实现四则运算1.,关于这个题⽬,要求是基于控制台,但是我善做主张(⾃以为是?)的⽤⽹页的形式去呈现。
2.学⽣登录这个平台,可以在上⾯看到⽼师布置的题⽬,学⽣可以进⾏做题,然后提交题⽬,会有相应的参考答案。
⽽⽼师具有查看同学们的答题情况及其统计做题信息。
3.基本功能:⽣成表达式,表达式运算扩展功能:对⽂件的读写,主要也是对题⽬和答案的存储功能,也可以借助数据库。
⾼级功能:查重。
虽然我实现了查重功能,但是我觉得这个功能在实际的运⽤中可能不会使⽤。
因为我没能想到⼀个⽐较优雅的⽅式去除重复的式⼦,每次⽣成⼀个四则运算都要检查是否和已经⽣成的四则运算重复,⽽且实际上⽣成的四则运算重复的可能性不能特别⼤。
我想到⼀个办法可能会⽐较好解决⼀点,就是相对于答案⼀样的四则运算才去⽐较它们是否重复。
但是⽣成的式⼦还是需要⽐较是否重复的问题。
我觉得很不优雅,⽽且我觉得实际运⽤中可能最简单粗暴的查重⽅式就是:避免答案⼀样的题⽬。
4.CalculateExp:最主要的类,⾥⾯包括了运算符优先级的存储,表达式解析成中缀表达式,中缀表达式转为后缀表达式,对后缀表达式进⾏计算,其中是除号和分数则进⾏分数处理,⽣成若⼲个表达式和结果的⽅法,中缀表达式⽣成⼆叉树。
Create:表达式⽣成类,成员变量包括了⽣成总数,数值范围,难度(最多操作符个数),涵盖了⽣成⼀个数(有可能是分数),⽣成操作符,⽣成表达式,⽣成⼀批表达式的⽅法Fraction:计算分数的类,拥有成员变量:分⼦和分母,然后对分⼦和分⼦通过辗转相除法进⾏约分,然后有两个分数的加减乘除运算。
Input:读取⽂件类,读取⽣成的题⽬和答案Output:写⼊⽂件类,将⽣成的题⽬和答案写到⽂件中Node:⼆叉树⽣成类,拥有成员变量:值,左⼦树,右⼦树,和后序遍历的⽅法Test:测试类,测试⼀个编写代码时需要测试的功能点。
5.下⾯对分数计算的代码我觉得很啰嗦,列出来说⼀下,实际上代码省去了,减号,乘号,除号,和捕获异常的代码。
java解析四则运算为树形的方法概述及解释说明1. 引言1.1 概述:本文将讨论Java解析四则运算为树形结构的方法。
四则运算是数学中最基础的运算,包括加法、减法、乘法和除法。
通过对四则运算表达式进行解析,可以将其转化为树形结构,以提供更方便的处理和计算方式。
在本文中,我们将介绍四则运算及其解析方式的简介,并重点关注树形结构在这种解析中的应用。
1.2 文章结构:本文共分为5个部分:引言、正文、解释说明、结论和后记。
在引言部分,我们将给出文章的概述,简述整篇文章的内容与目标。
在正文部分,我们将详细介绍四则运算及其解析方式的简介,并探究树形结构在这种解析中的作用。
在解释说明部分,我们会阐述将四则运算表达式转化为树形结构的基本概念和原理,并讨论Java中实现这一过程的方法。
接着,我们还会探讨树形结构在四则运算解析中的优势和应用场景。
在结论部分,我们将总结文章要点和重点论述内容,并对Java解析四则运算为树形的方法进行评价并展望未来的发展方向。
最后,在后记部分,我们将留下一些附加信息和感想。
1.3 目的:本文的目的是提供一个全面且易懂的解析四则运算为树形结构的方法,并探讨这种方法在Java中的应用。
通过深入了解四则运算的解析和树形结构的应用,读者可以更好地理解并使用这些技术,进一步提高程序设计和算法实现能力。
本文还旨在为Java开发者提供一个可靠而有效的工具,以便于他们处理复杂的四则运算表达式。
跟随本文学习并实践这种方法可以增强编码技巧和培养抽象思维能力,在日常开发中收获不少益处。
2. 正文:2.1 四则运算及其解析方式简介:在数学中,四则运算指的是加法、减法、乘法和除法这四种基本运算。
它们是最常见和基础的数学运算,广泛应用于各个领域。
在计算机科学中,我们通常需要将四则运算表达式进行解析,以便计算机能够理解和执行。
2.2 树形结构在四则运算解析中的应用:树形结构是一种非常适合表示嵌套层次关系的数据结构。
四则运算程序作业题⽬:1.需求分析: 根据⽤户所给参数设置出题难度,操作数范围,题⽬和答案输出路径 根据⽤户提供的题⽬和答案⽂件来对⽤户答案进⾏判断对错 实现+,-,x,÷四则运算 实现分数的计算,包括真分数 ⽣成的表达式包含括号且在计算时要精准识别计算 实现表达式的查重,例如1+2+3和3+2+1是重复的2.功能设计 在开始程序前先验证命令⾏传⼊参数是否正确 根据难度系数和操作数范围随机⽣成整数和分数 随机⽣成运算符并将其与随机数组成算式 计算题⽬结果 将题⽬和答案输出到指定⽂件 读⼊现有题⽬和⽤户答案⽂件对其作答进⾏判断对错 将作答情况输出到指定⽂件 设置题⽬难度系数:1--含+-运算,操作数不含分数; 2--含+-x运算,操作数含分数; 3--含+-x÷运算,操作数含分数;3.设计实现 采⽤Java实现,共有四个类: Question类:主类,识别⽤户输⼊参数,根据参数调⽤不同函数 Arithmetic类:根据难度系数和操作数范围⽣成整数或分数,还有运算符,随机对局部添加括号最后将其拼接成算式将其返回 Calculate类:对题⽬进⾏计算,返回题⽬答案 Save类:将题⽬,答案,成绩信息存储到⽂件中4.代码说明//合成算式public String CreateArith(int degree,int range){String s = new String();//存储加完括号的算式String ss = new String();s = s + Createnum(degree,range);//⽣成算式运算符个数的随机数Random random = new Random();int pis= random.nextInt(3)+1;//⾄多三个操作数,两个运算符for(int i = 0;i < pis;i++){//利⽤随机数控制新⽣成的运算符和数字添加在原来公式的前⽅还是后⽅//以实现括号可以出现在前半部和后半部String sym = CreateSymbol(degree);String num = Createnum(degree,range);int dir = (int)( Math.random() * 10)+1;if(dir>5){s = s + sym + num ;}else{s = num + sym + s;}//对算式添加括号if(i<2){int r = (int)( Math.random() * 10);if(r<5) {AddBracket(s);}}}return s;}//将表达式中含括号的表达式找出并局部计算之public String FindBrack(String equation){String temp = new String();String result = new String();String ans = new String();//查找左括号在表达式中的位置int left = stIndexOf('(');//若表达式没有括号则直接计算if(left==-1){ans = cal(equation);return ans;} else{//查找与之匹配的右括号int right = equation.indexOf(')', left);if(right==-1){throw new RuntimeException("the equation is wrong!");}else{//匹配成功则截取出括号内算式进⾏计算temp = equation.substring(left+1, right);result = cal(temp);//将计算完的结果直接拼接回原算式!⽅便得到最终结果equation = equation.substring(0,left)+result+equation.substring(right+1);return FindBrack(equation);}}}//获取操作数private List<String> GetNum(String equation) {equation = FindMinus(equation);Pattern pt = pile("\\+|\\-|\\*|\\÷");String[] split = pt.split(equation);//对提取出的数字进⾏判断是否含F,是的话将其转成负数List<String> list = new ArrayList<>();for(int i=0;i<split.length;i++){String number = split[i];if(number.equals("F")){number = "-"+number.substring(1);}if(number.contains("/")) {list.add(number);}else {number = number+"/"+String.valueOf(1);list.add(number);}}return list;}//计算拿除法举例public String cal(String equation){//每次调⽤获取最新的算式中的操作符List<String> operator = GetSym(equation);//获取操作符List<String> number = GetNum(equation); //获取操作数String str = new String();String ans = new String();String num1 = new String();String num2 = new String();int[] a = {};int[] b = {};//先乘除后加减:先操作乘除号,操作完移除,最后遍历加减号即可完成操作for(int i=0;i<=operator.size()-1;i++){str = operator.get(i);//运算并⽤运算结果替换操作数的位置if(str.equals("*")){num1 = number.remove(i);num2 = number.remove(i);int temp = 0;temp = num1.indexOf('/');a[0]= Integer.parseInt(num1.substring(0,temp));a[1]= Integer.parseInt(num1.substring(temp+1));temp = num2.indexOf('/');b[0]= Integer.parseInt(num2.substring(0,temp));b[1]= Integer.parseInt(num2.substring(temp+1));a[0] = a[0]*b[0]; //分⼦相乘a[1] = a[1]*b[1]; //分母相乘int d=common_divisor(a[0],a[1]);a[0] = a[0]/d;a[1] = a[1]/d;num1 = String.valueOf(a[0])+"/"+String.valueOf(a[1]);operator.remove(i);number.add(i, num1);i--; //防⽌漏掉运算符}//返回计算结果if(operator.size()==0) {num1 = number.get(0);int temp = 0;temp = num1.indexOf('/');a[0]= Integer.parseInt(num1.substring(0,temp));a[1]= Integer.parseInt(num1.substring(temp+1));//真分数结果if(a[0]>a[1]) {temp = a[0] / a[1];a[0] = a[0] % a[1]; if(a[0]!=0) num1 = String.valueOf(temp)+"'"+String.valueOf(a[0])+"/"+String.valueOf(a[1]); else num1 = String.valueOf(temp);}if(a[0]==a[1]) num1 = String.valueOf(1);}return num1;}//读⼊题⽬和答案并判断对错public boolean judge(String que,String ans,String gra){List<String> answer = new ArrayList<String>();List<String> question = new ArrayList<String>();List<String> grade = new ArrayList<String>();File ansFile=new File("D:\\"+ans); //答案⽂件File queFile=new File("D:\\"+que);//题⽬⽂件if(!queFile.isDirectory()||!ansFile.isDirectory()){System.out.println("⽂件不存在!");}else{System.out.println("正在加载中...");}BufferedReader reader=null;String s=null;int line=1;try{reader=new BufferedReader(new FileReader(ansFile));while((s=reader.readLine())!=null){answer.add(s);line++;}BufferedReader bufferedReader = reader=new BufferedReader(new FileReader(queFile)); System.out.println("读⼊的题⽬为:");while((s=reader.readLine())!=null){question.add(s);System.out.println(s);line++;}}catch(Exception e){e.printStackTrace();}finally{if(reader!=null){try{reader.close();}catch(Exception e){e.printStackTrace();}}}//判断是否正确Calculate cal = new Calculate();String rightNum = "(";String wrongNum = "(";int rightCnt = 0;int wrongCnt = 0;int ansCnt = answer.size();int queCnt = question.size();if(ansCnt!=queCnt){System.out.println("题⽬数量与答案数量不符,请检查。
JSP。
JavaBean实例---四则运算beanJSP JavaBean实例——四则运算BeanXXX是一种可重用的组件,我们可以在不同的程序中调用它来完成一定的逻辑功能。
现在,我们将创建一个案例,演示JavaBean的创建和调用。
该案例实现求取两个数的和、差、积和商等,包括一个JavaBean和两个JSP文件。
首先,我们需要创建JavaBean文件。
打开记事本,输入以下代码:package test;public class SiExample{private double num1;private double num2;public void setNum1(double num1){this.num1=num1;public void setNum2(double num2){ this.num2=num2;public double getNum1(){return num1;public double getNum2(){return num2;public double add(){double num3=num1+num2;return num3;public double jian(){double num3=num1-num2;return num3;public double cheng(){double num3=num1*num2;return num3;public double chu(){double num3=num1/num2;return num3;将上述代码保存,名称为SiExample.java。
在该文件中,我们创建了两个私有变量num1和num2,用来接收外部传递的参数。
接下来创建了set和get方法组,实现对变量num1和num2的赋值和获取。
最后创建了四个方法add()、jian()、cheng()和chu(),用来求取两个数的和、差、积和商。
接下来,我们需要创建客户输入页面。
Java程序设计案例教程第二版课程设计1. 简介本课程设计是基于《Java程序设计案例教程》第二版的内容展开的,旨在加深学生对Java编程语言的理解,并通过编写实际代码来提高编程能力。
在课程设计过程中,学生需要独立完成多个小项目的编写,以综合应用已学知识,实现目标程序的功能。
2. 课程设计要求本课程设计要求学生独立完成三个项目的编写,每个项目都需要具体的功能实现,如下所示:2.1 计算器设计编写一个 Java 简单计算器,实现四则运算的功能,包括加、减、乘、除、开方、百分号等运算。
样式上需要参考Windows系统的计算器界面。
通过此项目,学生将掌握Java语言的基本运算符的使用方法,理解基本数学运算的实现机制,并且学习掌握Java图形用户界面(GUI)的设计方法。
2.2 用户信息管理系统编写一个Java用户信息管理系统,实现对用户信息的增、删、改、查的操作,其中信息包括姓名、性别、年龄、联系方式等内容。
通过此项目,学生将掌握Java类的设计和使用,了解Java中不同访问控制修饰符的使用方法,并且学习掌握Java文件的读写操作。
2.3 图书管理系统编写一个Java图书管理系统,实现对图书信息的增、删、改、查的操作,其中信息包括图书名称、作者、价格、出版时间等内容。
通过此项目,学生将进一步掌握Java类、方法的设计和使用,了解Java面向对象的编程思想,并且学习掌握Java集合类的使用方法。
3. 实现过程学生可以自行选择开发环境和使用的编程语言版本,推荐使用Java 1.8及以上的版本。
在编写项目代码过程中,学生需要采用面向对象的编程思想,遵循良好的编程规范,严格按照课程设计要求完成每个项目。
为了方便批改和评分,学生需要实现以下功能:•实现项目功能的详细描述文档•代码注释规范,注明作者及编写时间等信息•提供具有实用意义的测试数据,并能够正确输出结果•有清晰、简洁、易懂的代码质量4. 评分标准课程设计是学生综合理解Java编程语言并学以致用的一个重要机会,因此在评分时将重点关注以下几点:•代码的正确性:能否实现各项功能要求•代码的规范性:是否符合规范,是否有良好的注释•代码的可读性:是否具有良好的代码结构,是否易于阅读和理解•前端UI:是否有良好的交互效果,是否美观5. 总结通过本课程设计,学生将掌握Java语言的基本运算符的使用方法,理解基本数学运算的实现机制,并且学习掌握Java图形用户界面(GUI)的设计方法。
JAVA四则运算算法⼀、程序要求解析⼀般数学算式,实现简单的带括号的加减乘除运算。
⼆、基本思路前⾯两篇介绍了直接解析字符串和⽤数组容器辅助解析的两种⽅式,这次再介绍最常⽤的解析算法——解析后缀表达式(逆波兰表达式)。
三、逆波兰表达式及其得到算法1、逆波兰表达式也即后缀表达式,指的是不包含括号,运算符放在两个运算对象的后⾯,所有的计算按运算符出现的顺序,严格从左向右进⾏(不再考虑运算符的优先规则)。
(摘⾃百度),既然没了运算符的优先规则,那么计算机解析起来⾃然容易的多。
对于我们常见的表达式,称为中缀表达式,每个中缀表达式都有对应的后缀表达式。
如:中缀表达式:-2*(1+6/3)+4后缀表达式:-2 1 6 3 / + * 4 +(这⾥为了区分负号和减号,我在数字与数字、数字与符号之间都加了空格,⾄于怎么从中缀表达式得到后缀表达式,后⾯有介绍及参考程序)⽽在解析后缀表达式时,只需要遵守以下原则即可:从左往右遍历遇到数字直接放⼊容器遇到运算符,将最后两个数字取出,进⾏该运算,将结果再放⼊容器遍历结束后,容器中的数字即为运算结果按这个过程⾛下来,⾃然⽽然的想到⽤栈是最合适的。
现只需想办法由输⼊的中缀表达式转为后缀表达式即可完成解析。
2、由中缀表达式得到后缀表达式的算法由中缀表达式得到后缀表达式,只要遵守以下步骤即可:⾸先设置运算符的优先级(这样设置也是为了简化程序):”null” 栈顶若为空,假设优先级为0“(” 优先级设为1“+-” 优先级设为2“*/” 优先级设为3从左向右遍历中缀表达式遇到数字直接输出遇到符号遇到左括号,直接压栈遇到右括号,弹栈输出直到弹出左括号(左括号不输出)遇到运算符,⽐较栈顶符号,若该运算符优先级⼤于栈顶,直接压栈;若⼩于栈顶,弹栈输出直到⼤于栈顶,然后将改运算符压栈。
最后将符合栈弹栈并输出现根据这个原则,⼿动模拟⼀遍转换过程:还是以-2*(1+6/3)+4为例四、代码⼀环境:Eclipse Java EE IDE(Version: Oxygen.1a Release (4.7.1a))jdk1.8.0_131先写⼀个最基本的两位数四则运算⽅法,⽐较简单,没有写注释:private static double doubleCal(double a1, double a2, char operator) throws Exception {switch (operator) {case '+':return a1 + a2;case '-':return a1 - a2;case '*':return a1 * a2;case '/':return a1 / a2;default:break;}throw new Exception("illegal operator!");} 写⼀个获得优先级的⽅法:private static int getPriority(String s) throws Exception {if(s==null) return 0;switch(s) {case "(":return 1;case "+":;case "-":return 2;case "*":;case "/":return 3;default:break;}throw new Exception("illegal operator!");}将中缀表达式转变为后缀表达式:private static String toSufExpr(String expr) throws Exception {System.out.println("将"+expr+"解析为后缀表达式...");/*返回结果字符串*/StringBuffer sufExpr = new StringBuffer();/*盛放运算符的栈*/Stack<String> operator = new Stack<String>();operator.push(null);//在栈顶压⼈⼀个null,配合它的优先级,⽬的是减少下⾯程序的判断/* 将expr打散分散成运算数和运算符 */Pattern p = pile("(?<!\\d)-?\\d+(\\.\\d+)?|[+\\-*/()]");//这个正则为匹配表达式中的数字或运算符Matcher m = p.matcher(expr);while (m.find()) {String temp = m.group();if (temp.matches("[+\\-*/()]")) { //是运算符if (temp.equals("(")) { //遇到左括号,直接压栈operator.push(temp);System.out.println("'('压栈");} else if (temp.equals(")")) { //遇到右括号,弹栈输出直到弹出左括号(左括号不输出)String topItem = null;while (!(topItem = operator.pop()).equals("(")) {System.out.println(topItem+"弹栈");sufExpr.append(topItem+" ");System.out.println("输出:"+sufExpr);}} else {//遇到运算符,⽐较栈顶符号,若该运算符优先级⼤于栈顶,直接压栈;若⼩于栈顶,弹栈输出直到⼤于栈顶,然后将改运算符压栈。
四则运算 java四则运算是数学中最基础的运算方式,包括加法、减法、乘法和除法。
在计算机编程中,四则运算是一项基本的功能,尤其是在Java 语言中。
本文将围绕Java中的四则运算展开,介绍其基本概念、用法和注意事项。
一、加法运算加法是最基本的运算之一,用于计算两个数的和。
在Java中,使用加号(+)进行加法运算。
例如,计算两个整数的和可以使用以下代码:int a = 5;int b = 3;int sum = a + b;System.out.println("两个整数的和为:" + sum);二、减法运算减法也是常用的运算方式,用于计算两个数的差。
在Java中,使用减号(-)进行减法运算。
例如,计算两个整数的差可以使用以下代码:int a = 5;int b = 3;int difference = a - b;System.out.println("两个整数的差为:" + difference);三、乘法运算乘法是常用的运算方式,用于计算两个数的积。
在Java中,使用星号(*)进行乘法运算。
例如,计算两个整数的积可以使用以下代码:int a = 5;int b = 3;int product = a * b;System.out.println("两个整数的积为:" + product);四、除法运算除法是常用的运算方式,用于计算两个数的商。
在Java中,使用斜杠(/)进行除法运算。
例如,计算两个整数的商可以使用以下代码:int a = 5;int b = 3;int quotient = a / b;System.out.println("两个整数的商为:" + quotient);需要注意的是,如果除数为0时,会出现除数为0的异常,需要进行异常处理。
五、运算顺序在四则运算中,有一定的运算顺序。
在Java中,乘法和除法的运算优先级高于加法和减法。
四则运算计算器程序设计(java-gui) 四则运算计算器程序是一种常见的计算机程序,用于执行基本的数学运算,包括加法、减法、乘法和除法。
本文将介绍如何设计一个使用Java GUI实现的四则运算计算器程序。
首先,我们需要创建一个Java GUI窗体,用于显示计算器的界面。
可以使用Java Swing或JavaFX来创建窗体,本文以Java Swing为例。
可以使用JFrame类来创建一个窗体,并添加各种组件,如按钮、标签和文本框等。
在窗体中,我们需要添加一个文本框用于输入表达式和显示结果。
可以使用JTextField类来创建一个文本框,并设置合适的大小和位置。
另外,我们还需要添加一些按钮来表示数字和运算符,可以使用JButton类来创建按钮,并将其添加到窗体中。
接下来,我们需要为按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
例如,当用户点击数字按钮时,我们需要将相应的数字添加到文本框中;当用户点击运算符按钮时,我们需要将相应的运算符添加到文本框中;当用户点击等号按钮时,我们需要解析文本框中的表达式,并执行相应的运算。
为了实现四则运算,我们可以使用Java的数学库来执行相应的运算。
例如,可以使用Integer.parseInt方法将文本框中的字符串转换为整数,使用加法运算符执行加法运算,使用乘法运算符执行乘法运算等。
在解析和执行表达式时,我们需要考虑一些错误情况,例如除数为零或表达式不合法等。
可以使用try-catch语句来捕获这些异常,并显示相应的错误信息。
最后,我们需要将计算结果显示在文本框中,并提供清除按钮,以便用户可以清除文本框中的内容。
可以使用setText方法将计算结果显示在文本框中,使用setText("")方法来清除文本框中的内容。
综上所述,一个基本的四则运算计算器程序的设计包括创建窗体、添加组件、添加事件监听器、解析和执行表达式、处理异常和显示结果等步骤。
安徽工程大学《汇编语言程序设计》大作业报告班级: XXXXX 学号: XXXXXXXX 完成人: XXXXXXX任课老师: XXXXXXX 时间: XXXXXXXXXX《汇编语言程序设计》大作业任务书大作业题目:四则运算程序程序功能要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
1.设计目标运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,能够在DOS界面下进行简单的加、减、乘、除的简单计算。
程序应有操作提示、输入和输出。
自动闪烁光标,并提示输入信息。
输入正确的数值等符号后可以进行正确的运算,程序计算其结果值并输出。
程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。
且程序主界面需为一个由‘*’组成边框的矩形窗口。
2.软件设计2.1程序设计的基本思想主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。
如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。
计算显示完毕后,按提示选择是否要继续计算,不选择继续则结束。
对屏幕上输入字符串的接受,为INPUT语句段,见源代码,主要是将数字和运算符分开存放。
MATCH子程序,子程序内有三次跳转,将运算符选择正确的语句进行计算。
由于操作符只有+、-、*、/,没有涉及到括号,不用考虑括号的匹配问题。
流程图如下:图1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。
首先根据输入调用对应的“+”、“-”、“*”、“/”四个函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几个模块服务的,大致的流程图如下图2:图2 子模块流程图3.系统调试3.1测试目标(1)在屏幕上显示一个由‘*’组成边框的矩形窗口;(2)自动闪烁光标,并提示输入信息;(3)能够完成单项表达式的输入、显示和运算;(4)编制并调试出程序。
java四则混合运算Java中进行四则混合运算非常简单,因为Java是一种通用编程语言,支持所有的基本算术运算。
以下是一个简单的Java程序,可以进行四则混合运算:```javaimport java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个数字:");double num1 = scanner.nextDouble();System.out.println("请输入第二个数字:");double num2 = scanner.nextDouble();System.out.println("请输入操作符(+,-,*,/):");char operator = scanner.next().charAt(0);double result;switch(operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if (num2 != 0) {result = num1 / num2;} else {System.out.println("错误: 除数不能为0");return;}break;default:System.out.println("错误: 无效的操作符");return;}System.out.println("结果是: " + result);}}```这个程序首先让用户输入两个数字和一个操作符,然后根据操作符执行相应的运算,并输出结果。
四则运算⼆(javaweb)最近我和我的⼩伙伴yaoyali结成对⼦,共同写⽹页版的四则运算。
虽然现在还没弄好,但是⽐起上次⽤纯java写的四则运算有了很⼤改进。
⼀.存放四则运算题⽬和答案的类package com.jaovo.msg.model;public class DoubleOperation {private static int operationNumber;private static double[] result;private static String[] question;public static String[] getQuestion() {return question;}public static void setQuestion(String[] question) {DoubleOperation.question = question;}public int getOperationNumber() {return operationNumber;}public void setOperationNumber(int operationNumber) {this.operationNumber = operationNumber;}public double[] getResult() {return result;}public void setResult(double[] result) {this.result = result;}}⼆.Welcom页⾯@charset "UTF-8";/****四则运算题⽬表格(<table>)****/.box{margin-top: 50px;}/****结果输⼊框(<input>)****/.result{width: 60px;padding: 5px;border:none;font-size:20px;border-bottom: solid yellowgreen 5px;text-align:center;}/****题⽬(<td>)****/.expr{font-size: x-large;}/****⾮分数/运算符(<div>)*****/.nomal{text-align:center;float:left;position: relative;top: 16px;margin-left: 3px;margin-right: 3px;width="20px"}/****分数(<div>)****/.fraction{text-align:center;float: left;margin-left:3px;margin-right: 3px;width="20px"}/****题⽬选择*****/.option{text-align: center;}/******你准备好了吗?按钮******/.submit1{padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 20px;background: #C90;font-family: "微软雅⿊";font-weight: bold;font-size: 20px;}/*****提交按钮*****/.submit{padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 20px;border-radius: 5px;background: cornflowerblue;border: none;cursor: pointer;color:lightyellow;font-family: "微软雅⿊";font-weight: bold;font-size: 20px;}/******计时器*******/.timer{position:fixed;top: 10px;right: 10px;border: none;width:50px;text-align: right;background: none;}.pause{position:fixed;top: 30px;right: 10px;}/****题⽬选项****/.option{margin-left:auto;margin-right:auto;width:600px;margin-top: 130px;border:dashed #9ACD32 2px;padding-top: 100px;padding-bottom: 100px;}/****答题按钮*****/<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="css/style.css"/><title>⼩学⽣四则运算</title><style type="text/css">body{background-image:url(image/2.jpg);}#p1{text - indent:2em;text - align:center;font:italic 35px/40px 幼圆}</style></head><body><p id="p1">欢迎⼩朋友来到⼩猪佩奇的数学乐园,快跟⼩猪佩奇⼀起去冒险吧!</p><form action="choose.jsp" class="option"><button class="submit1" style="margin-top:60px">你准备好了吗?</button></form></body></html>结果截图三.选择出题数量及题⽬种类choose.jsp和Connect.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="css/style.css"/><title>⼩学⽣四则运算</title><style type="text/css">body{background-image:url(image/4.jpg);}</style></head><body><div style="text-align:right;"><a href="Welcome.jsp">退出</a><br><br></div><form action="Connect.jsp" class="option"><center><h2>题⽬定制</h2></center><p>选择题⽬类型:<select name="elementNum"><option>2</option><option>3</option></select>元运算<br /></p>选择题⽬数量:<input name="count" value="10" type="radio"/>10<input name="count" value="20" type="radio"/>20<input name="count" value="30" type="radio"/>30<input name="count" value="40" type="radio"/>40<input name="count" value="50" type="radio"/>50<input name="count" value="5000" type="radio"/>5000<br/><input name="count" value="1000000" type="radio"/>10000000(极限测试,慎选!!)<br /><br /><button class="submit" style="margin-top:50px">开始答题!</button></form></body></html><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>连接</title></head><body><%String type=request.getParameter("elementNum");String OperationNumber=request.getParameter("count");if(OperationNumber==null||"".equals(OperationNumber)){OperationNumber="10";}if(type.equals("2")){response.sendRedirect("DoubleOperation.jsp?OperationNumber="+OperationNumber);}else{response.sendRedirect("ThreeOperation.jsp?OperationNumber="+OperationNumber);}%></body></html>四.⼆元四则运算DoubleOperation.jsp<%@ page import="java.util.Random" %><%@ page import="ng.Math" %><%@ page import="com.jaovo.msg.model.DoubleOperation" %><%@ page import="java.math.BigInteger" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>⼆元运算</title></head><body><form action="doDoubleOperation.jsp" method="post"><div style="text-align:right;"><a href="choose.jsp">题⽬定制</a> <a href="Welcome.jsp">退出</a><br><br></div><%int character=0;//运算符+,-,*,/int num1=0;//运算式中第⼀个数int num2=0;//运算式中第⼆个数int correct=0;//计算正确的数⽬int error=0;//计算错误的数⽬String operat=null;//计算式Random random = new Random();int Endtime=1; //跳转时间int operationNumber=Integer.parseInt(request.getParameter("OperationNumber"));//打印题⽬的数量String question[]=new String[operationNumber];double result[]=new double[operationNumber];//计算式的结果for(int i=0;i<operationNumber;i++)//初始化计算式的结果{result[i]=0;question[i]=null;}DoubleOperation doubleoperation=new DoubleOperation();//初始化.java⽂件中存储的计算公式个数,问题,答案 doubleoperation.setOperationNumber(operationNumber);doubleoperation.setQuestion(question);doubleoperation.setResult(result);for(int i=0;i<operationNumber;i++){character=random.nextInt(4)%4+1;if(character==1)//计算加法{num1=random.nextInt(100)%100;//随机出⼀个0~100的数num2=random.nextInt(100)%100;String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"+"+number2+"=";result[i]=num1+num2;}else if(character==2)//计算减法{num1=random.nextInt(100)%100;//随机出⼀个1~100的数if(num1==0)num1=num1+2;//若num1=0,则加2num2=(int)random.nextInt(num1)%(num1);//随机出⼀个0~num1的数String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"-"+number2+"=";result[i]=num1-num2;}else if(character==3)//计算乘法{num1=random.nextInt(9)%9;//随机出⼀个0~9的数num2=random.nextInt(9)%9;String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"*"+number2+"=";result[i]=num1*num2;}else //计算除法{do{num1=random.nextInt(81)%81;//随机出⼀个0~81的数if(num1>9)num2=random.nextInt(9)%9;else{if(num1==0)num1++;num2=(int)random.nextInt(num1)%(num1);}if(num2==0)//当num2=0再重新⽣成num2{num2=num2+1;}String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"/"+number2+"=";result[i]=num1/num2;}while((result[i]>=10)||(num1%num2!=0));//商为10以内的数}if(Double.valueOf(result[i])>100) {//如果结果⼤于100或⼩数位数⼤于1则不输出i--;}else {question[i]=operat;%><%=operat %><input type="text" name="child_result<%=i %>"><br><br><%}}%><input type="submit" value="提交" name="提交"><%doubleoperation.setOperationNumber(operationNumber);doubleoperation.setQuestion(question);doubleoperation.setResult(result);%><%-- <meta http-equiv="refresh" content ="<%=Endtime*60 %>;url=doDoubleOperation.jsp"> --%> <!-- Endtime分钟后跳转到结果界⾯ --></form></body></html>doDoubleOperation.jsp<%@ page import="com.jaovo.msg.model.DoubleOperation" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><div style="text-align:right;"><a href="choose.jsp">题⽬定制</a> <a href="Welcome.jsp">退出</a><br><br></div><%int correct=0;//计算正确的数⽬int error=0;//计算错误的数⽬int nullerror=0;//没答题的数⽬DoubleOperation doubleoperation=new DoubleOperation();double[] result=doubleoperation.getResult();String[] question=doubleoperation.getQuestion();int operationNumber=doubleoperation.getOperationNumber();System.out.println("count="+operationNumber);for(int i=0;i<operationNumber;i++){String child_result=request.getParameter("child_result"+i);%><%=question[i] %><%=child_result %> <%if((null==child_result)||("".equals(child_result))){nullerror++;%> 正确答案是<%=result[i]%><br><br><%}else{double child_result2=Double.valueOf(child_result);if(child_result2==result[i]){correct++;%>√<br><br><%}else{error++;%>× 正确答案是<%=result[i]%><br><br><%}}}%><!-- <iframe src='DoubleOperation.jsp'/> -->恭喜你!答对了<%=correct %>道题,答错了<%=error %>道题,没答<%=nullerror %>道题</body></html>四.三元运算ThreeOperation.jsp<%@ page import="java.util.Random" %><%@ page import="ng.Math" %><%@ page import="com.jaovo.msg.model.DoubleOperation" %><%@ page import="java.math.BigInteger" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>三元运算</title></head><body><form action="doDoubleOperation.jsp" method="post"><div style="text-align:right;"><a href="choose.jsp">题⽬定制</a> <a href="Welcome.jsp">退出</a><br><br></div><%int character1=0;//第⼀个运算符+,-,*,/int character2=0;//第⼆个运算符int num1=0;//运算式中第⼀个数int num2=0;//运算式中第⼆个数int num3=0;//运算式中的第三个数int correct=0;//计算正确的数⽬int error=0;//计算错误的数⽬String operat=null;//计算式int operationNumber=Integer.parseInt(request.getParameter("OperationNumber"));//打印题⽬的数量String question[]=new String[operationNumber];double result[]=new double[operationNumber];//计算式的结果Random random = new Random();int Endtime=1; //跳转时间for(int i=0;i<operationNumber;i++)//初始化计算式的结果{result[i]=0;question[i]=null;}DoubleOperation doubleoperation=new DoubleOperation();//初始化.java⽂件中存储的计算公式个数,问题,答案 doubleoperation.setOperationNumber(operationNumber);doubleoperation.setQuestion(question);doubleoperation.setResult(result);for(int i=0;i<operationNumber;i++){character1=random.nextInt(4)%4+1;if(character1==1)//计算加法{num1=random.nextInt(100)%100;//随机出⼀个0~100的数num2=random.nextInt(100)%100;String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"+"+number2;result[i]=num1+num2;}else if(character1==2)//计算减法{num1=random.nextInt(100)%100;//随机出⼀个1~100的数if(num1==0)num1=num1+2;//若num1=0,则加2num2=(int)random.nextInt(num1)%(num1);//随机出⼀个0~num1的数String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"-"+number2;result[i]=num1-num2;}else if(character1==3)//计算乘法{num1=random.nextInt(9)%9;//随机出⼀个0~9的数num2=random.nextInt(9)%9;String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"*"+number2;result[i]=num1*num2;}else //计算除法{do{num1=random.nextInt(81)%81;//随机出⼀个0~81的数if(num1>9)num2=random.nextInt(9)%9;else{if(num1==0)num1++;num2=(int)random.nextInt(num1)%(num1);}if(num2==0)//当num2=0再重新⽣成num2{num2=num2+1;}String number1=String.valueOf(num1);String number2=String.valueOf(num2);operat="第("+(i+1)+")题"+number1+"/"+number2;result[i]=num1/num2;}while((result[i]>=10)||(num1%num2!=0));//商为10以内的数}character2=random.nextInt(4)%4+1;if(character2==1)//计算第⼆个加号{num3=random.nextInt(100)%100;String number3=String.valueOf(num3);operat=operat+"+"+num3+"=";result[i]=result[i]+num3;}else if(character2==2)//第⼆个运算符是减号{if(result[i]==0)result[i]=result[i]+2;if(result[i]<100){num3=(int)random.nextInt((int)result[i])%((int)result[i]);//随机出⼀个⼩于被减数的数 }else{num3=random.nextInt(100)%100;}String number3=String.valueOf(num3);operat=operat+"-"+num3+"=";result[i]=result[i]-num3;}else if(character2==3)//乘号{if(character1==2)//若第⼀个运算符是减号,则再随机出来⼀个第⼆个数与第三个随机的数⼩于第⼆个数 num1>=num2*num3 num3<=num1/num2 {if(num2>9){num2=(int)random.nextInt(9)%(9);}if(num1==0)num3=0;else{if(num2==0) num2=num2+1;int num4=num1/num2;num3=(int)random.nextInt(num4)%(num4);}if(num3>9){num3=(int)random.nextInt(9)%(9);}String number3=String.valueOf(num3);operat="第("+(i+1)+")题"+num1+"-"+num2+"*"+num3+"=";result[i]=num1-(num2*num3);}else //第⼀个符号是加乘除。
JSP JavaBean实例---四则运算beanJavaBean是一个可重用组件,我们可以在不同的程序中调用重复调用JavaBean 组件。
只需给JavaBean组件接口中传递相应的参数,就可以通过JavaBean来完成一定的逻辑功能。
现在创建一个案例,演示JavaBean的创建和调用。
该案例实现求取两个数的和、差、积和商等,包括一个JavaBean和两个JSP文件。
打开记事本,首先创建JavaBean文件,其代码如下所示:将上述代码保存,名称为SiExample.java。
在该文件中,创建了两个私有变量n um1和num2,用来接收外部传递的参数。
接下来创建了set和get方法组,实现对变量num1和num2的赋值和获取。
最后创建了四个方法add()、jian()、cheng()和c hu(),用来求取两个数的和、差、积和商。
打开记事本,创建客户输入页面,其代码如下所示:将上述代码保存,名称为SiExample.jsp。
该文件实现了一个Form表单,用来获取客户的输入信息。
打开记事本,创建信息处理页面,其代码如下所示:}%></center>将上述代码保存,名称为SiExample1.jsp文件。
在该文件中,首先使用jsp:use Bean动作指令将本程序需要使用的JavaBean导入过来。
接下来使用request对象获取上一个页面传递的传递输入信息,并使用parseDouble方法将字符串转换为双精度类型的值。
最后使用JavaBean的对象suan,分别调用方法add()、jian()、cheng()和chu(),用来求取两个数的和、差、积和商。
将JavaBean文件复制到C:\Tomcat 6.0\webapps\JSPExample\WEB-INF\classes 目录下,打开命令提示符窗口,编译JavaBean文件。
然后将JSP文件复制到C:\To mcat 6.0\webapps\JSPExample目录下。
滁州学院课程设计报告课程名称:Java程序设计设计题目:四则运算测试系统系别:计算机与信息工程学院专业:计算机科学与技术组别:第七组起止日期: 2011年11月20日~ 2012 年1月8日指导教师: 马骏计算机与信息工程学院二○ 一一年制课程设计任务书目录1 需求分析 (1)1.1 课程设计目的与要求 (1)1.1.1 课程设计目的 (1)1.1.2 课程设计要求 (1)2 概要设计 (2)3 详细设计 (3)4 程序源代码 (4)5 程序运行于调试 (11)总结 (12)致谢 (12)参考文献 (12)1 需求分析1.1 课程设计目的与要求1.1.1 课程设计目的Java语言是面向对象的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。
它具有面向对象、跨平台、分布应用等特点。
它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
很多程序开发人员得第一选择。
为了将课堂上得知识掌握得更加透彻,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。
学习任何知识得目的都是要将它运用到实践中去,所以我们要运用已有的知识,独立得将这个课程设计完成,只有这样,我们才能将知识变成本领,变成属于自己得东西,通过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。
这次课程设计我主要研究了利用已学的Java知识编辑一个四则运算测试系统。
通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识。
1.1.2 课程设计要求程序实现十道100以内四则运算数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。
JAVA实验汇总1.实验名称:计算器程序开发实验目标:编写一个简单的计算器程序,能够实现基本的四则运算。
实验步骤:(1) 创建一个名为Calculator的类。
(2) 在Calculator类中定义四个方法,分别用于实现加法、减法、乘法和除法运算。
(3) 使用Scanner类的对象从用户输入中获取两个操作数和一个操作符。
(4)根据输入的操作符来调用相应的方法进行运算,并输出结果。
(5)运行程序,测试各种运算。
2.实验名称:学生信息管理系统开发实验目标:编写一个学生信息管理系统,能够实现学生信息的录入、查询、修改和删除等功能。
实验步骤:(1) 创建一个名为Student的类,该类包含学生的学号、姓名和成绩等属性。
(2) 创建一个名为StudentSystem的类,该类包含学生信息的管理功能。
(3) 在StudentSystem类中使用ArrayList集合存储学生信息。
(4) 实现录入学生信息的功能,包括学号、姓名和成绩的输入,并将学生信息添加到ArrayList集合中。
(5)实现查询学生信息的功能,根据学号或姓名进行查询,并输出找到的学生信息。
(6) 实现修改学生信息的功能,根据学号或姓名进行查询,然后允许用户修改学生的姓名和成绩,并更新ArrayList中的学生信息。
(7) 实现删除学生信息的功能,根据学号或姓名进行查询,然后从ArrayList中删除学生信息。
(8)运行程序,测试各种功能。
3.实验名称:图书管理系统开发实验目标:编写一个图书管理系统,能够实现图书的录入、借出、归还和查询等功能。
实验步骤:(1) 创建一个名为Book的类,该类包含图书的编号、书名和借出状态等属性。
(2) 创建一个名为Library的类,该类包含图书信息的管理功能。
(3) 在Library类中使用HashMap集合存储图书信息,键为图书的编号,值为Book类的对象。
(4) 实现录入图书的功能,包括图书编号、书名和借出状态的输入,并将图书信息添加到HashMap集合中。
《程序设计实践》题目:小学生四则运算练习程序
学校:
学院:
班级:
学号:
姓名:_
2014 年11月24 日
实践基础程序设计实践
一、实践目的
1、掌握基本输入输出。
2、掌握方法定义与调用,理解参数传递方式。
二、实践要求
利用方法、数组、基本输入输出等Java基础知识,给出所选项目的基本设计与实现。
三、项目需求
所选项目名称:小学生四则运算练习程序
实现对小学生简单加法、减法、乘法、除法的四则运算练习。
要求通过键盘输入两个运算数,并回显输入数,将运算结果输出。
四、项目设计方案
Test类:
数据域:sum,总分数。
方法:core()负责随机生成题目,并对其打上分数。
main(String[] args)是程序的入口,负责程序的开始。
五、核心算法详细设计
1.public static void main(String[] args) {
Test t = new Test();
// 提示用户考试信息
System.out.println("本次测试共十道题,每题十分,满分一百分");
// 将分数sum初始化为0;
t.sum = 0;
// 创建一个随机类
Random r = new Random();
// 进行10个循环,对应着10道题
for (int i = 0; i < 10; i++) {
t.core();
}
//打印出考试成绩
System.out.println(" 考试结束");
System.out.println(" 您的总分为" + t.sum);
}
2.//考试的题目。
private void core() {
//产生一个随即生成器
Random r = new Random();
//产生一个在0,1,-1之中的数
int m, n;
m = r.nextInt() % 10;
n = m % 2;
六、完整源码
package test;
import java.util.Random;
import java.util.Scanner;
public class Test {
int sum;
public static void main(String[] args) {
Test t = new Test();
// 提示用户考试信息
System.out.println("本次测试共十道题,每题十分,满分一百分");
// 将分数sum初始化为0;
t.sum = 0;
// 创建一个随机类
Random r = new Random();
// 进行10个循环,对应着10道题
for (int i = 0; i < 10; i++) {
t.core();
}
//打印出考试成绩
System.out.println(" 考试结束");
System.out.println(" 您的总分为" + t.sum);
}
//考试的题目。
private void core() {
//产生一个随即生成器
Random r = new Random();
//产生一个在0,1,-1之中的数
int m, n;
m = r.nextInt() % 10;
n = m % 2;
switch (n) {
//如果n为-1,则进行加法运算
case -1:
int a,b,c;
//a为操作数,b为被操作数,都是10以内的数字。
a = r.nextInt() % 10;
b = r.nextInt() % 10;
//给出运算式,让用户输入答案
System.out.println(a + "+" + "(" + b + ")=?");
Scanner x = new Scanner(System.in);
c = x.nextInt();
//判断用户的答案正确与否,若正确则加10分,错误就只提示错误
if (c != a + b)
System.out.println("回答错误");
else {
System.out.println(" 回答正确");
sum = sum + 10;
}
break;
//如果n为0,则进行乘法运算
case 0:
int q,w,e;
//q为操作数,w为被操作数,都是10以内的数字。
q = r.nextInt() % 10;
w = r.nextInt() % 10;
//给出运算式,让用户输入答案
System.out.println(q + "*" + "(" + w + ")" + "=?");
Scanner y = new Scanner(System.in);
e = y.nextInt();
//判断用户的答案正确与否,若正确则加10分,错误就只提示错误
if (e != q * w)
System.out.println("回答错误");
else {
System.out.println(" 回答正确");
sum = sum + 10;
}
break;
//如果n为1,则进行除法运算
case 1:
double j,k,l;
//j为操作数,k为被操作数,都是10以内的数字。
j = r.nextInt() % 10;
k = r.nextInt() % 10;
//k作为被除数不能为0
if (k == 0)
k++;
//给出运算式,让用户输入答案
System.out.println(j + "/" + "(" + k + ")" + "=?");
Scanner z = new Scanner(System.in);
l = z.nextDouble();
//判断用户的答案正确与否,若正确则加10分,错误就只提示错误
if (l != (j / k) / 1.00)
System.out.println("回答错误");
else {
System.out.println(" 回答正确");
sum = sum + 10;
}
break;
}
}
}
七、使用说明与运行结果截图
1.运行程序,出现提示页面,弹出第一个题目
2.
2.输入结果“-1”,单击回车,提示回答正确,弹出下一题3.输入结果“-5”,单击回车,提示正确,弹出下一题
4.输入错误答案“53”,提示错误
5.输入结果“7”,单击回车,弹出下一题。
6.继续做题,直到完成10道计算,在此不一一阐述
7. 当10道题目做完结束后,显示最终成绩
八、实践总结
本次实践是第一次实践,自己的基本功不扎实就更要努力了,老师说了这个学期的实践对于自己的动手能力和以后的学习都很有帮助,所以我也下定决心好好学,这个程序自己打
的很累,其中张昊给了我很大的帮助,结果还算满意,不过还有不足,也希望自己能够在今后越做越好,能够提高自己,也希望老师能更加督促我,成绩能有一个大的进步。
感谢下载!
欢迎您的下载,资料仅供参考。