在java中查找2D int数组中int值的位置

在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=

我想写一个方法,它将返回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=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;
}