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
这段代码找出X数组中最后一个等于y的元素下标,不存在等于y的元素返回-1.
for循环从数组中最后一个元素向前检测,但是条件i>0,导致了不会检查第一个元素。
给定一个测试用例,一个空的数组,那么代码不执行for循环,则故障没有执行。
给定一个测试用例,数组[1,2,3],y=3 则返回2.执行了故障但并没有发生错误。
给定一个测试用例,数组[1,2,3],y=4 则返回-1.发生了错误,但没有失效。
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
这段代码找出X数组中最后一个等于0的元素下标,不存在等于0的元素返回-1.
for循环从数组中第一个元素x检向后测,但是条件i>0,发现为0的元素就返回该元素下标,不会继续向后检测。
给定一个测试用例,一个空的数组,那么代码不执行for循环,则故障没有执行。
给定一个测试用例,数组[1,2,3] 则返回-1.执行了故障但并没有发生错误。
给定一个测试用例,数组[1,0,2] 则返回1.发生了错误,但没有失效。