如果声明等于两次

时间:2014-02-28 12:57:26

标签: java arrays if-statement return

我有一个数组,我想搜索并检查是否有任何值有多个路由。例如,我希望计算机检查数组,看看0,1是否在任何地方出现两次 它没有,但我的似乎不起作用。我希望这适用于左侧的所有值。因此,第一列中的任何值都不应超过0或1次。

例如0,1和0,1应该永远不会存在两次,如果确实如此,计算机应该返回false,但如果不存在则返回true

    myArray=new int[][]{
        {0, 1},
        {0, 0},
        {1, 1},
        {1, 0},
        {2, 0},
        {2, 1},
        {3, 0},

    };



    for (int i = 0; i <= myArray.length; i++){

        for(int z = 1; z<= myArray.length; z++){
            if(myArray[i][1]== myArray[z][1] && myArray[i][0] == myArray[z][0]){

                check = false;
            }
            else{
                check = true;
            }
        }
    }
    return check;
    }

2 个答案:

答案 0 :(得分:0)

问题在于你的“检查”,即使你发现存在“对”,在下一次迭代中,它将被重写为真。

如果你想知道,如果你的数组包含双重性,它应该是这样的:

for (int i = 0; i < myArray.length; i++){
    for(int z = i+1; z< myArray.length; z++){
        if(myArray[i][1]== myArray[z][1] && myArray[i][0] == myArray[z][0]){
            return false;
        }
    }
}
return true;
}

感谢StephaneM,我们发现您应该将z = 1更改为z = i+1

我还注意到它会以arrayoutofbounds异常结束,你必须改变

i <= myArray.lengthi < myArray.length

答案 1 :(得分:0)

请查看(控制语句分支教程)[http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html]。当你遇到第一个负面条件时,你只需要摆脱循环。

或者,将此包装为函数,并在遇到负面条件时在嵌套循环中仅return false