我想写一个在二维数组中循环的代码,主要的方法是findVal,它获取一个二维数组和一个值,如果值在数组中,则返回true,我使用一个二进制搜索代码在数组的一行中循环,另一个方法在二维数组中成行向下循环,问题是当我运行一个测试程序时,它不会打开终端窗口,看起来我的循环是无限的,我的代码如下
public static int linearSearch(int [] arr, int num)
{
int pos=0;
while ((arr[pos]<num)&&(pos<arr.length-1))
pos++;
if(arr[pos]==num){return pos;}
else {return -1;}
}
public static boolean findVal(int [][] m, int val)
{
int n=m.length;
int j=m.length-1, i=0;
while (i<=j)
{
if(val == m[i][j]){return true;}
else if(val > m[i][j] ){
if(linearSearch(m[i],val) !=-1){return true;}
}
else{
i++;
}
}
return false;
}
有人能告诉我我做错了什么吗?
注意:我不能使用嵌套循环,也不能在for循环中运行n*n。