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
首先这段代码的功能是找到数组中最后一个y的索引,如果没有就返回-1
1. 这段代码没有遍历到数组的第一个元素,也就是x[0],这是这段代码的Fault
2. x[] = {}; y=2 没有进入Fault
3. x[] = {1,2,3}; y=2 进入Fault但没有进入Error
4. x[] = {1,2,3}; y=0 进入Error但没有进入Failutre
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
这段代码的功能是找到数组中的最后一个为0的索引,如果没有0的元素,就返回-1
1. 这段代码实际的功能是找数组的第一个为0的元素的索引,也就是从循环开始就是Fault
2. x[] = {}即没有进入Fault
3. x[] = {1}即进入Fault但不进入error, 即只有一个元素时,功能上第一个元素就是最后一个元素,表示没有进入error
4. x[] = {0,1,2}即进入Error但不进入failture