我有一个数组,我想搜索并检查是否有任何值有多个路由。例如,我希望计算机检查数组,看看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;
}
答案 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.length
至i < myArray.length
答案 1 :(得分:0)
请查看(控制语句分支教程)[http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html]。当你遇到第一个负面条件时,你只需要摆脱循环。
或者,将此包装为函数,并在遇到负面条件时在嵌套循环中仅return false
。