我应该如何修复我的代码以阻止测试代码出错?

时间:2014-07-10 16:22:30

标签: java arrays debugging computer-science

这项任务是关于测试数组的。这是我的代码,当运行给出的测试代码时,我们应该可以获得所有结果,但我得到的是我在代码下面发布的内容。 有什么建议吗? 请帮忙

    public class ArrayUtils 
{
    public static int minValue(int[] list) throws BadArrayException 
    {
        if(list == null)
            throw new BadArrayException("Array is null");
        else if(list.length == 0)
            throw new BadArrayException("Array is empty");

        int minValue = list[0];  
        for(int i=1; i < list.length; i++){  
            if(list[i] < minValue){  
            minValue = list[i];  
            } 
        }  
        return minValue; 
        }   


    public static int[] copyRange(int[] list, int startIndex)
            throws BadArrayException{
                if (list == null)
                    throw new BadArrayException("Array is null");
                else if (startIndex < 0 || startIndex > list.length)
                    throw new ArrayIndexOutOfBoundsException(startIndex);
                else{
                    int [] newList = new int [list.length - startIndex];
                    int x = 0;
                    int i;
                    for (i = startIndex; i < list.length; i++)
                        if (startIndex == 0){
                            newList[i] = list[i];
                        }else{
                            newList[x] = list[i];
                            x += 1;
                        }
                    }
                int[] newList = null;
                return newList;
                }

    public static int indexOf(int[] list, int searchValue) throws BadArrayException 
    {
        int indexValue = 0;

        if(list == null)
            throw new BadArrayException("Array is null");
        else if(list.length == 0)
            return -1;

        for(int i = 0; i < list.length; i++){
            if(list[i] == searchValue)
                indexValue = i;
        }
        return indexValue;
    }

    public static int lastIndexOf(int[] list, int searchValue) throws BadArrayException
    {
        int indexValue = 0;
        int last = list.length;

        if(list == null)
            throw new BadArrayException("Array is null");
        else if(list.length == 0)
            return -1;

        for(int i = last; i >= 0; i--){
            if(list[i] == searchValue)
                indexValue = i;
        }
        return indexValue;        
    }
}

测试ArrayUtils类异常处理 - 2014年2月2日

---测试minValue方法---

获取null数组的minVal   OK - minValue抛出null数组的异常:BadArrayException

获取空数组的minVal   OK - minValue为空数组抛出异常:BadArrayException

获得minVal():[10]   好的 - 预期minValue返回10并得到:10

获得minVal():[20,30]   好的 - 预期的minValue返回20并得到:20

获得minVal():[40,30]   好的 - 预期的minValue返回30并获得:30

获得minVal():[10,10]   好的 - 预期minValue返回10并得到:10

获得minVal():[15,25,35]   好的 - 预期minValue返回15并得到:15

获得minVal():[25,20,30]   好的 - 预期的minValue返回20并得到:20

获得minVal():[50,40,30]   好的 - 预期的minValue返回30并获得:30

获得minVal():[50,-10,40,-25,50,40,30]   好的 - 预期minValue返回-25并得到:-25

获得minVal():[200,50,-40,60,-15,30,75]   好的 - 预期minValue返回-40并得到:-40

---测试copyRange方法---

获取null数组的copyRange   好的 - copyRange引发了null数组的异常:BadArrayException

获取:[]的copyRange(list,-1)   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:-1

获取:[]的copyRange(list,0)   错误 - 期望copyRange返回长度为0的数组,但得到一个空数组

获取copyRange(list,1):[]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:1

获取:[20]的copyRange(list,-1)   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:-1

获取:[20]的copyRange(list,0)   错误 - 期望copyRange返回长度为1的数组,但得到一个空数组

获取copyRange(list,1):[20]   错误 - 期望copyRange返回长度为0的数组,但得到一个空数组

获取copyRange(list,2):[20]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:2

获取copyRange(list,-1):[10,15]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:-1

获取copyRange(list,0):[10,15]   错误 - 期望copyRange返回长度为2的数组,但得到一个空数组

获取copyRange(list,1):[10,15]   错误 - 期望copyRange返回长度为1的数组,但得到一个空数组

获取copyRange(list,2):[10,15]   错误 - 期望copyRange返回长度为0的数组,但得到一个空数组

获取copyRange(list,3):[10,15]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:3

获取copyRange(list,-1):[30,35,40,45,50]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:-1

获取copyRange(list,0):[30,35,40,45,50]   错误 - 期望copyRange返回长度为5的数组,但得到一个空数组

获取copyRange(list,1):[30,35,40,45,50]   错误 - 期望copyRange返回长度为4的数组,但得到一个空数组

获取copyRange(list,2):[30,35,40,45,50]   错误 - 期望copyRange返回长度为3的数组,但得到一个空数组

获取copyRange(list,3):[30,35,40,45,50]   错误 - 期望copyRange返回长度为2的数组,但得到一个空数组

获取copyRange(list,4):[30,35,40,45,50]   错误 - 期望copyRange返回长度为1的数组,但得到一个空数组

获取copyRange(list,5):[30,35,40,45,50]   错误 - 期望copyRange返回长度为0的数组,但得到一个空数组

获取copyRange(list,6):[30,35,40,45,50]   好的 - copyRange抛出异常java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:6

---测试indexOf和lastIndexOf方法---

获取null数组的indexOf   OK - indexOf抛出了null数组的异常:BadArrayException

获取空数组的lastIndexOf   错误 - lastIndexOf引发了一个意外的异常:java.lang.NullPointerException

获取indexOf(5):[]   OK - 期望indexOf返回-1并得到:-1

获取lastIndexOf(5):[]   好的 - 期望lastIndexOf返回-1并得到:-1

获取indexOf(20):[20]   OK - 期望indexOf返回0并得到:0

获取indexOf(25):[20]   错误 - 期望indexOf返回-1但得到:0

获取lastIndexOf(20):[20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:1

获取lastIndexOf(25):[20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:1

获取indexOf(5):[5,10,15,20,10,15,5,10,15,20]   错误 - 期望indexOf返回0但得到:6

获得indexOf(10):[5,10,15,20,10,15,5,10,15,20]   错误 - 预期指数返回1但得到:7

获取indexOf(15):[5,10,15,20,10,15,5,10,15,20]   错误 - 预期指数返回2但得到:8

获取indexOf(20):[5,10,15,20,10,15,5,10,15,20]   错误 - 预期指数返回3但得到:9

获取indexOf(0):[5,10,15,20,10,15,5,10,15,20]   错误 - 期望indexOf返回-1但得到:0

获取lastIndexOf(5):[5,10,15,20,10,15,5,10,15,20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:10

获取lastIndexOf(10):[5,10,15,20,10,15,5,10,15,20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:10

获取lastIndexOf(15):[5,10,15,20,10,15,5,10,15,20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:10

获取lastIndexOf(20):[5,10,15,20,10,15,5,10,15,20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:10

获取lastIndexOf(0):[5,10,15,20,10,15,5,10,15,20]   错误 - lastIndexOf引发了一个意外的异常:java.lang.ArrayIndexOutOfBoundsException:10

完成 - 按回车键结束程序

1 个答案:

答案 0 :(得分:2)

copyRange始终返回null:

int[] newList = null;
return newList;

IndexOf&amp; lastIndexOf

阅读IndexOutOfBoundsException相应地返回正确的值

考虑一下并做出这些修正,我们不能用勺子提供每个答案,也可能还有其他一些我没有解决的错误。