检查Java中的2D数组中是否存在Row

时间:2014-01-30 16:50:53

标签: java arrays 2d row

我无法修复代码,因此无法获取

java.lang.ArrayIndexOutOfBoundsException: 6

这是我目前的代码:

    public static boolean isRow(int row, double[][] array)
    {
    boolean flag = false;

    if ( array != null && array.length >= 0 )
    {
        if ( array[row] != null )
        {
            flag = true;
        }
    }
    return flag;
    }

我知道我可能必须在某处有一个for循环,以便它可以检查以查看

!(row > array.length);

但我只是不确定如何写入。我正在使用JUNIT测试,试图将“6”作为行变量传递。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

您需要检查row是否在数组的范围内:

public static boolean isRow(int row, double[][] array)
{
    boolean flag = false;

    if (array != null && row >= 0 && row < array.length)
    {
        if ( array[row] != null )
        {
            flag = true;
        }
    }
    return flag;
}

或更简洁(利用&&运算符的short-circuit性质):

public static boolean isRow(int row, double[][] array)
{
    return array != null && row >= 0 && row < array.length && array[row] != null;
}

答案 1 :(得分:1)

检查数组[row]是否存在,然后在测试中请求它。

public static boolean isRow(int row, double[][] array)
{
boolean flag = false;

if ( array != null && array.length >= 0 && array.length > row)
{
    if ( array[row] != null )
    {
        flag = true;
    }
}
return flag;
}

答案 2 :(得分:0)

如果我理解正确,您需要检查的是数组中是否有具有给定索引的行。正如你所写的那样:

!(row >= array.length);

就够了。如果数组有6个元素,array.length将返回6.如果传递的行索引小于6,则它是一个有效行(obv行必须是&gt; = 0)。

编辑:请注意条件的变化&gt; =,如Ted所建议的那样。相反,你可以简单地把行&lt; array.length。另外,根据Ted的回答进行空检查。