1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
l 请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。
l 在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
l 利用FindBugs查找程序中是否存在bug。
1 public class HCF { 2 public static int getHCF(int a ,int b){ 3 int hcf=1; 4 int min; 5 int max; 6 if(a>b){ 7 min=b; 8 max=a; 9 }else{ 10 min=a; 11 max=b; 12 } 13 for(int i=min;i>0;i--){ 14 if(min%i==0){ 15 if(max%i==0){ 16 hcf=i; 17 break; 18 } 19 } 20 } 21 return hcf; 22 } 23 }
main
import java.util.Scanner; public class Demo { public static void main(String[] args) { System.out.println("请输入两个整数:"); Scanner scanner = new Scanner(System.in); int a=scanner.nextInt(); int b=scanner.nextInt(); System.out.println("最大公约数为:"+HCF.getHCF(a, b)); } }
findbugs显示不存在bug
2、 逻辑覆盖的应用
l 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径
l 附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。
语句覆盖:
| x | y | 路径 | 预期结果 |
1 | 4 | -1 | aeg | X=3,y=-1 |
2 | 5 | -1 | aef | X=6,y=-1 |
3 | 0 | 2 | abc | X=0,y=1.5 |
分支覆盖(判定覆盖)
| x | y | 路径 | 预期结果 |
1 | 4 | -1 | aeg | X=3,y=-1 |
2 | 5 | -1 | aef | X=6,y=-1 |
3 | 0 | 1 | abd | X=0,y=1 |
4 | 0 | 2 | abc | X=0,y=3 |
实现代码:
1 public class demo2 { 2 3 4 public static void demo(int x,int y){ 5 if(x<4 || y>0){ 6 if(x>1){ 7 y+=1; 8 } 9 }else { 10 if(x>=5){ 11 x-=y; 12 }else{ 13 x+=y; 14 } 15 } 16 System.out.println("x="+x+",y="+y); 17 18 } 19 }
测试
@Test
public void test() {
int x=4;
int y=-1;
demo2.demo(x, y);
}