结对编程---四则运算练习题
实验目的:
(1)帮助老师编写300道四则运算练习题
(2)每个运算包含两个运算符
(3)第一部分运算数为100以内,不需给出答案
(4)第二部分结果为100以内,需给出答案
实验环境:
windows 10
Eclipse
实验内容:
- 小学老师要每周给同学出300道四则运算练习题。
- 这个程序有很多种实现方式:
– C/C++
– C#/VB.net/Java
– Excel
– Unix Shell
– Emacs/Powershell/Vbscript
– Perl
– Python
- 两个运算符,100 以内的数字,不需要写答案。【估计时间1】
- 现在估计写这个程序需要的时间
- 马上把代码写出来
- 需要写答案,并且保证答案在 0..100 之间【估计时间2】
心得体会:
在得到题目后,首先和编程伙伴进行讨论,正所谓一千个人就有一千个哈姆雷特,我们两个人都提出了不同的看法。初次看到题目对题目的意思还不明确,编写代码也就无从谈起,在经历了好一会的讨论后,我们最终整合两人的思想,各取所优,对编写的内容和过程有了具体的思路。在编写的过程中,一人编写,一人在旁边观看,同时并查阅相关资料,和对不明确的例如随机数的生成函数的具体运用和random函数的使用细节进行搜索和学习。结对编程成功的将1+1大于2的思想体现了出来,由于身边有个领航员角色的存在,在编写代码时,一旦出现输入错误或者不明白的地方,就会有人及时的提醒并立即查阅相关资料。并且有个同伴可以一起讨论,融合两个人不同的见解和观点,每个人就不是一个人在战斗,编写的过程也就变得不再生硬,对bug的处理也就在两个人的讨论中,伴随着欢声笑语而轻松解决。
代码分析:
当看见要生成300到四则运算题目,就想到了随机函数,在Java中常用的有math类中的random()方法和Random类。还有学会使用String类的Valueof()方法将数字转化为字符串。
结果展示:
源代码:
import java.util.Random; public class Test1 { private int x1; private int x2; private int x3; private int a; private int b; private String symbol1; private String symbol2; private double answer; public void init1() { for(int i=0;i<300;i++) { Random r=new Random(); x1=r.nextInt(100); x2=r.nextInt(100); x3=r.nextInt(100); a=r.nextInt(4); b=r.nextInt(4); switch(a) { case 0: symbol1="+"; break; case 1: symbol1="-"; break; case 2: symbol1="*"; break; case 3: symbol1="/"; break; } switch(b) { case 0: symbol2="+"; break; case 1: symbol2="-"; break; case 2: symbol2="*"; break; case 3: symbol2="/"; break; } if(a==3) { while(x2==0) { x2=r.nextInt(100); } } if(b==3) { while(x3==0) { x3=r.nextInt(100); } } String s=String.valueOf(i+1); String ss=s+"."; System.out.printf("%-6s%d%s%d%s%d=\n",ss,x1,symbol1,x2,symbol2,x3); } } public void init2() { int i=0; while(i<300) { Random r=new Random(); x1=r.nextInt(100); x2=r.nextInt(100); x3=r.nextInt(100); a=r.nextInt(4); b=r.nextInt(4); switch(a) { case 0: symbol1="+"; break; case 1: symbol1="-"; break; case 2: symbol1="*"; break; case 3: symbol1="/"; break; } switch(b) { case 0: symbol2="+"; break; case 1: symbol2="-"; break; case 2: symbol2="*"; break; case 3: symbol2="/"; break; } if(a==3) { while(x2==0) { x2=r.nextInt(100); } } if(b==3) { while(x3==0) { x3=r.nextInt(100); } } Test2 obj=new Test2(); answer = obj.calculate(x1, x2, x3, symbol1, symbol2); answer = (double) Math.round(answer * 100) / 100; if(answer>=0&&answer<100) { i++; String s=String.valueOf(i); String ss=s+"."; System.out.printf("%-6s%d%s%d%s%d=",ss,x1,symbol1,x2,symbol2,x3); System.out.printf("%.2f\n",answer); } } } public static void main(String[] args) { Test1 obj=new Test1(); //两个运算符,0-100以内的数字(不含100),无答案 obj.init1(); //有答案(保留两位小数),保证答案在0-100之间(不含100) obj.init2(); } } public class Test2 { public double calculate(int x1,int x2,int x3,String symbol1,String symbol2) { switch(symbol1) { case "+": if(symbol2=="+") { return (double)x1+x2+x3; } if(symbol2=="-") { return (double)x1+x2-x3; } if(symbol2=="*") { return (double)x2*x3+x1; } if(symbol2=="/") { return (double)x2/x3+x1; } break; case "-": if(symbol2=="+") { return (double)x1-x2+x3; } if(symbol2=="-") { return (double)x1-x2-x3; } if(symbol2=="*") { return (double)-x2*x3+x1; } if(symbol2=="/") { return (double)-x2/x3+x1; } break; case "*": if(symbol2=="+") { return (double)x1*x2+x3; } if(symbol2=="-") { return (double)x1*x2-x3; } if(symbol2=="*") { return (double)x1*x2*x3; } if(symbol2=="/") { return (double)x1*x2/x3; } break; case "/": if(symbol2=="+") { return (double)x1/x2+x3; } if(symbol2=="-") { return (double)x1/x2-x3; } if(symbol2=="*") { return (double)x1/x2*x3; } if(symbol2=="/") { return (double)x1/x2/x3; } break; } return -1; } }
posted on 2021-04-27 20:40 immature123 阅读(310) 评论(0) 编辑 收藏 举报