实验三
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
单元测试: