我无法修复代码,因此无法获取
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”作为行变量传递。
非常感谢任何帮助!
答案 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的回答进行空检查。