软测homework2
程序一:
public int findLast (int[] x, int y) {
//Effects: If x==null throw
NullPointerException
// else return the index of the last element
// in x that equals y.
// If no such element exists, return -1 for (int i=x.length-1; i > 0; i--)
{
if (x[i] == y)
{
return i;
}
}
return -1;
}
// test: x=[2, 3, 5]; y = 2
// Expected = 0
程序二:
public static int lastZero (int[] x) {
//Effects: if x==null throw
NullPointerException
// else return the index of the LAST 0 in x.
// Return -1 if 0 does not occur in x for (int i = 0; i < x.length; i++)
{
if (x[i] == 0)
{
return i;
}
} return -1;
}
// test: x=[0, 1, 0]
// Expected = 2
1. Identify the fault
程序一:应将x>0修改为x>=0
Fault in Program 1 lies in that x > 0, which should be corrected to: x >=0.
程序二:应将 int i = x.length-1; i >= 0; i--或者将x[i]==0修改为x[x.length-1-i]
Fault in Program 2 lies in that it outputs the first 0 in the integer array instead of the last 0. Therefore, we should iterates from the end to the beginning or modify judgement condition in order to get the last index of 0.
2. A test case that does not execute the fault
程序一:x=null;
程序二:x=null;
3. A test case that executes the fault, but does not result in an error state
程序一:test:x=[2,3,5];y=5, Expected=2
程序二:test:x=[1,2,0], Excepted=2
4. A test case that results in an error, but not a failure
程序一:test:x=[2,3,5];y=4,expected=-1
程序二:test:x=[1,2,3],Excepted=-1