实验内容
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。
在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
利用FindBugs查找程序中是否存在bug。
package cn.deng;
/*
* 求两个数的最大公约数,利用的是欧几里德算法
* dengchunzeng
* 2016-4-2
*/
public class GetMaxDivide {
public static int Way(int a,int b){
if(a<b){
int temp;
temp=a;
a=b;
b=temp;
}
if(0==b){
return a;
}
return Way(b,a%b);
}
}
package cn.deng;
import java.util.Scanner;
public class Bemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入x,y两个正整数:");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int y=in.nextInt();
GetMaxDivide getmax=new GetMaxDivide();
int val=getmax.Way(x, y);
System.out.println("两个数的最大公约数是:"+val);
}
}
2、 逻辑覆盖的应用
按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径
附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。
语句覆盖:abc 测试用例:X=1,Y=2
分支覆盖:aeg 测试用例:X=4,Y=0
import java.util.Scanner;
public class Da {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("请输入x: ");
int x = in.nextInt();
Scanner in1 = new Scanner(System.in);
System.out.print("请输入y: ");
int y = in1.nextInt();
Xiao xiao=new Xiao();
xiao.Way(x, y);
}
}
public class Xiao {
public void Way(int x,int y){
if((x<4 || y>0)&&(y>1)){
y=y+1;
}
else {
if(x>=5){
x=x-y;
}
else{
x=x+y;
}
}
if((x<4 || y>0)&&(y<1 || y==1)){
}
System.out.println("x的值为:"+x);
System.out.println("y的值为:"+y);
}
}
public class XiaoTest {
@Test
public void test() {
System.out.println("语句覆盖:");
Xiao xiao=new xiao();
xiao.Way(1, 2);
System.out.println("分支覆盖:");
xiao.Way(4, 0);
}
}