在java中查找2D int数组中int值的位置
我想写一个方法,它将返回2D int数组中某个值的第一个位置。如果值不在数组中,则posistion将是一个值为[-1,-1]的数组 我的代码是:在java中查找2D int数组中int值的位置,java,arrays,Java,Arrays,我想写一个方法,它将返回2D int数组中某个值的第一个位置。如果值不在数组中,则posistion将是一个值为[-1,-1]的数组 我的代码是: public static int[] findItemIn2DArray(int[][] A, int value) { int position[] = new int [] {-1, -1} ; for (int i=0; i < A.length; i++) { for (int j=
public static int[] findItemIn2DArray(int[][] A, int value)
{
int position[] = new int [] {-1, -1} ;
for (int i=0; i < A.length; i++)
{
for (int j=0; j < (A[i].length/2)+1; j++)
{
if ( A[i][j] == value )
{
position [0] = i;
position [1] = j;
}
break;
}
break;
}
return position;
}
我正在搜索值10
它应该返回[1,3],但是我得到[-1,-1]。我认为它不会遍历所有行,而是只检查第一个值
你能帮我吗?谢谢。如果第一次出现的值不等于该值,它会立即中断循环。尝试将break语句移动到'if'语句中,这是因为您在内部for循环之后中断了外部for循环。首先,您需要遍历整个列,而不仅仅是其中的一半(在第二个for循环中) 第二,您的第一个
break
语句应该在if语句中,因为您现在拥有代码的方式,您的程序总是会在没有到达所有元素的情况下从代码中中断出来
第三,你为什么有第二次破发?这会导致每次只通过第一行时代码都会中断。在那里你不需要它
您的代码应该如下所示:
public static int[] findItemIn2DArray(int[][] A, int value)
{
int position[] = new int [] {-1, -1} ;
boolean found = false;
for (int i=0; i < A.length; i++)
{
for (int j=0; j < (A[i].length); j++)
{
if ( A[i][j] == value )
{
position [0] = i;
position [1] = j;
found = true;
break;
}
}
if(found)
break;
}
return position;
}
public static int[]findItem2dArray(int[]A,int值)
{
int position[]=新int[]{-1,-1};
布尔值=false;
for(int i=0;i
A[i].length/2)+1是一个输入错误,它应该是一个[i].length(这是在未经检查的情况下使用CNTL+C时发生的情况!)
关于break命令的评论非常有用,谢谢大家 为什么只搜索“嵌入”数组的一半?似乎一些简单的调试或日志记录几乎可以立即清除这个问题。
public static int[] findItemIn2DArray(int[][] A, int value)
{
int position[] = new int [] {-1, -1} ;
boolean found = false;
for (int i=0; i < A.length; i++)
{
for (int j=0; j < (A[i].length); j++)
{
if ( A[i][j] == value )
{
position [0] = i;
position [1] = j;
found = true;
break;
}
}
if(found)
break;
}
return position;
}