实验三

1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)

l  请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。

l  在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。

l  利用FindBugs查找程序中是否存在bug。

import java.util.Scanner;

/**

 * 计算整数X和整数Y的最大公约数。

 * @author 洪曙鹏

 *

 */

 

public class CalGCD {

    //创建一个名为GCD的方法,初始化两个数字

    public void GCD(int num1,int num2){

       int result=0;

       //输入的两个数字从1开始进行正除,每次叠加1,i要小于num1和num2中的最小数

       for(int i=1;i<(num1<num2?num1:num2);i++){

           //如果num1和num2整除于i余数为0,结果即为最大公约数

           if(num1%i==0&&num2%i==0){

              result = i;

           }

       }

       System.out.println(num1+"与"+num2+"的最大公约数是"+result);

    }

    public static void main(String[] args){

    Scanner scan = new Scanner(System.in);

    System.out.println("请输入第一个整数:");

    int num1 = scan.nextInt();

    System.out.println("请输入第二个整数:");

    int num2 = scan.nextInt();

    CalGCD calGCD = new CalGCD();

    calGCD.GCD(num1, num2);

}

}

 

 

2、 逻辑覆盖的应用

l  按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径

l  附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。

 

   

import java.util.Scanner;

 

 

public class text2 {

 

    /**

     * 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径

     * @param 洪曙鹏

     */

    //定义一个方法

    public void LogicCover(int x,int y){

       if(x<4 ||y>0){

              y = y + 1;

           }

       }else if(x>=5){

           x = x - y;

       }else{

           x = x + y;

       }

       System.out.println("X为:"+x+",Y为:"+y);

    }

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Scanner scan = new Scanner(System.in);

       System.out.println("请输入整数X:");

       int x = scan.nextInt();

       System.out.println("请输入整数Y:");

       int y = scan.nextInt();

       text2 t = new text2();

       t.LogicCover(x, y);

    }

 

}

 

语句覆盖

路径abc x =3 y =2   结果x=3,y=3

 

 

单元测试:

分支覆盖

路径abd  x=3 y=-1  结果x=3,y=-1

 

 

单元测试:

 

posted @ 2016-04-12 17:45  tiktok  阅读(176)  评论(0编辑  收藏  举报