# 结对编程-四则运算-题目去重

## 第一件事

### 更改上周出现问题的代码

• 上周我们的代码经过老师的检查后出现了许多错误这是我们不想看到的结果。
• 于是我们更改了原有代码的结构。
    public class Achv {
public static void main(String[] args) {
LevelTwo two = new LevelTwo();
LevelOne one = new LevelOne();
LevelThree three = new LevelThree();
Postfix b = new Postfix();
String another = "Y";
Scanner scan = new Scanner(System.in);
while (another.equalsIgnoreCase("Y")){
System.out.println("Which level do you need?");
System.out.println("We have 1 , 2 , 3");
int level = scan.nextInt();
if (level==1||level==2||level==3){
if (level==1){
one.project();
System.out.println("True:"+one.count);
System.out.println("Do you want to try again?(Y/N)");
another = scan.nextLine();
another = scan.nextLine();
}
if (level==2){
two.project();
System.out.println("True:"+two.count);
System.out.println("Do you want to try again?(Y/N)");
another = scan.nextLine();
another = scan.nextLine();
}
if (level==3){
three.Level();
System.out.println("True:"+three.count);
System.out.println("Do you want to try again?(Y/N)");
another = scan.nextLine();
another = scan.nextLine();
}
}
else {
System.out.println("Wrong message");
System.out.println("Do you want to try again?(Y/N)");
another = scan.nextLine();
another = scan.nextLine();
}
}
}
}

• 更改后的代码比之前更简洁，更牢固，当然同时我们也规范了类名。

## 第二件事

### 出题，去重

• 首先因为作业的要求，所以我们必须对自己的生成题目的类进行更改。
    public String project(int b){
Postfix a = new Postfix();
LevelOne one = new LevelOne();
LevelTwo two =new LevelTwo();
if (b==1){
return one.OpOne();
}
if (b==2){
return one.OpTwo();
}
if (b==3){

return two.Pro();
}
if (b==4){

return Four();
}
if (b==5){
return Five();
}
if (b==6){
return six();
}
else
return sevn();

}

• 然后根据所拥有的知识进行去重
• 思路：我们的去重方法由于能力原因，我们首先想到的是先将答案相同的题目去掉，然后当运算符较少的时候我们决定直接去掉相同的题目
    if (optr_num==1) {
int count=0;
for (int i = 0; i < expr_num; i++) {
line = a.project(optr_num);
}
for (int i=0;i<expr_num;i++){
line=list.get(i);
for(int j=0;j<expr_num;j++){
if (line==list.get(j)){   //依次判断题目是否有重复
count++;
if (count>1){
arr.append(j);
}
}

}
}
for (int i=0;i<expr_num;i++){

for (int j=0;j<expr_num;j++){

if (j<arr.length()) {
if (i==arr.codePointAt(j)){
fw.write(a.project(optr_num));
fw.write('\n');
}
}
else {
fw.write(list.get(i));
fw.write('\n');
}
}
}
}

• 虽然还是有点问题，我们会后续改正的

## 出现的问题总结

• 检查软件使用-环境变量的配置

• 1.在下载好JDK的基础上，右击“计算机”选择“属性”，然后选择左边“高级系统设置”选择上面“高级”选项卡，点击右下角“环境变量”按钮。

• 2.首先在下面的系统变量栏目点击新建，变量名填写JAVA_HOME，变量值填写JDK的安装路径，在这里就填写自己的JDK安装路径，刚才上面的截图显示我的是“C:\Program Files\Java\jdk1.6.0_39”。

• 3.在系统变量里点击新建变量名填写CLASSPATH，变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 注意不要忘记前面的点和中间的分号。系统变量配置完毕

• 4.检验是否配置成功 运行cmd 输入 java -version （java 和 -version 之间有空格）
若如图所示 显示版本信息 则说明安装和配置成功。

• 提示找不到主类

• 原因：在实验exprchecker中删除多余的TXT文件时，误删除了.class文件。

### PSP

- PSP2.1 Personal Software Process Stages 预估耗时（小时） 实际耗时（小时）
Planning 计划 50 57
· Estimate · 估计这个任务需要多少时间 50 57
· Analysis · 需求分析 (包括学习新技术) 5 5
· Design Spec · 生成设计文档 2 2
· Design Review · 设计复审 (和同事审核设计文档) 4 4
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 3 3
· Design · 具体设计 20 25
· Coding · 具体编码 2 2
· Code Review · 代码复审 4 6
· Test · 测试（自我测试，修改代码，提交修改） 2 2
·Reporting ·报告 2 2
· Test Report · 测试报告
· Size Measurement · 计算工作量 1 1
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 2 2

## 总结

• 这是开始结对编程的第三周了,上两周我们对结对编程的认知不够，也曾看过邹老师给的链接中那位同学的五个问题。对此我很想回答第一个问题。当然，即使我和结对伙伴的能力不强，但我也很想说一说。由于能力原因，我们没有把这周所有的代码都用结对编程的方式写出来，但在Achv类的改写上我们使用结对编程的方式，给我们的初感觉就是有点笨拙，但很微妙，编写出的代码很简单易懂，但很实用，至少不会走太多岔路。当然如果太过复杂的程序的话，如此做就感觉有点难了，但我相信一直下去这种感觉会更好。

## 打分

• 王彪（自己）：70
• 王旌含（伙伴）：30

posted @ 2017-06-04 22:58  Wb同学在此  阅读(218)  评论(0编辑  收藏  举报