20172316 结对编程-四则运算 第二周 阶段总结
1.项目内容
以结对小组形式编写代码,实现以下功能:
1.自动生成题目
2.题目运算(判题)
3.支持真分数
4.生成题目添加括号
5.题目去重(扩展需求,加分项)
6.文件处理(扩展需求,自行学习,加分项)
相关过程截图
-
最开始的代码名称十分不规范,有的使用拼音,有的使用英文,有的不知所云,其他组员第一次看见名称时不容易理解和衔接起来;
-
出现了两个程序之间符号表示的差异,对于式子的值的计算有很大影响;
结对评价
唐才铭敲代码时间太长、太晚,影响正常休息和第二天的学习生活,身体是革命本钱。
王文彬博客中“关键代码解释”和“生成题目的相关代码”重复,篇幅上占用较大,建议合并。
关键代码解释
下面是生成n级计算式的方案之一,解释写在代码对应位置的注释中:
import java.util.Scanner;
public class Compute2 {
protected int a;
String s1, str = "";
int level;
public Compute2(){
String s1 = "", str = "";
int level = 1;
}
public String Computing(int x){
level = x;
int a1 = (int) (Math.random()*100);//形成一级式,数值是0~100之间
int a2 = (int) (Math.random()*100);//的闭开区间的整数
int t1 = (int) (Math.random()*4); //随机变量t1决定两数之间的符号
switch (t1){ //通过switch语句实现int值到字符的转换
case 0:{
s1 = " + ";
break;
}
case 1:{
s1 = " - ";
break;
}
case 2:{
s1 = " * ";
break;
}
case 3:{
s1 = " / ";
}
}
for (int i = 0; i < level - 1; i++){//循环,将一级式添加为多级
int a = (int) (Math.random()*100);
int t = (int) (Math.random()*4);
String s = "";
switch (t){
case 0:{
s = " + ";
break;
}
case 1:{
s = " - ";
break;
}
case 2:{
s = " * ";
break;
}
case 3:{
s = " / ";
}
}
str += a + s;
}
str += a1 + s1 + a2 + " = ";//通过这个操作在原本的一级式前
return str; //加上(n-1)个“‘整数’+‘运算符’”
}
public String getStr(){ //测试时用来甄别错误的方法,可略去
return str;
}
public void formulaXX(int x){ //实现人机交互输出对应等级要求的式子,
String string = " "; //参数x是输出式子的个数
int y;
for (int i = 0; i < x; i++){
Scanner scan = new Scanner(System.in);
y = scan.nextInt();
Compute2 com = new Compute2();
string = "题" + (i + 1) + ": " + com.Computing(y) + "
";
System.out.println(string);
}
}
public void setLevel(int n){ //level是式子的级数,为了适应计算和判断而创建
level = n;
}
public int getLevel(){
return level;
}
}
遇到的困难及解决方法
如果困难的定义是花了许多许多功夫去克服的问题,那么在这个阶段还没有遇到大的困难。
写出项目中自己负责的部分
1.自动生成题目