immature123

 

结对编程---四则运算练习题

实验目的:

(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  阅读(305)  评论(0编辑  收藏  举报

导航