如何获得正确的测试方法语法

时间:2014-04-14 20:11:50

标签: java

我认为我在做一些非常低效的事情,但我正在尝试制作一个测试方法来检查我的containsOpposites方法是否有效。我相信containsOpposites方法确实有效,但main方法只返回true,即使数组中不包含相反的元素。我做错了什么?

boolean containsOpposites(int[] a) {
    for (int i=0;i<a.length; i++){
        for (int k= i+1; k<a.length; k++){

            if (a[i]== -a[k]){ return true;

            }

        }
    }

    return false;

}

   String test (int []a) {
    if (containsOpposites(a)) {return "true";}
    else return  "false";
}

public void main (String[] args) {
     int []l = new int[10]; /*this array contains no negative elements but the test 
     method return true*/
     l[0]=1;  
     l[1]=2;  
     l[2]=3;  
     l[3]=2;  

    System.out.println("" + test(l));

}

1 个答案:

答案 0 :(得分:2)

执行此操作int []l = new int[10];时,您最终得到的数组看起来像[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]。然后,您将覆盖前4个元素,但其余6个元素仍为0。由于-0 == 0评估为true,因此您的代码认为存在对立面。

请参阅this question,了解Java如何根据数据类型初始化数组。