使用泛型的二维数组中的最大元素
Max element in a 2 dimensional array using generics
我已经完成了我所有的代码,但我终其一生都无法弄清楚为什么当我 运行 最大元素是 5 而不是 6 时。非常感谢您的帮助。
public class MaxElement2DimArray
{
public static void main(String[] args)
{
Integer[][] numbers = { {1, 2, 3}, {4, 5, 6} };
System.out.println("Max element in array is: " +max(numbers));
}
public static<E extends Comparable<E>> E max(E[] [] list)
{
E max = list[0][0];
for (int i=1; i<list.length; i++)
{
for (int j=1; j<list.length; j++)
{
if (max.compareTo(list[i][j]) < 0)
{
max = list[i][j];
}
}
}
return max;
}
}
您的内部 for 循环仅迭代两次,因为它引用了外部列表的长度。它应该引用内部列表的长度
for (int j=0; j<list[i].length; j++){
...
}
此外,您的索引从 1 开始,因此您将跳过整个第一个内部数组,以及所有其他数组的第一个元素。
我已经完成了我所有的代码,但我终其一生都无法弄清楚为什么当我 运行 最大元素是 5 而不是 6 时。非常感谢您的帮助。
public class MaxElement2DimArray
{
public static void main(String[] args)
{
Integer[][] numbers = { {1, 2, 3}, {4, 5, 6} };
System.out.println("Max element in array is: " +max(numbers));
}
public static<E extends Comparable<E>> E max(E[] [] list)
{
E max = list[0][0];
for (int i=1; i<list.length; i++)
{
for (int j=1; j<list.length; j++)
{
if (max.compareTo(list[i][j]) < 0)
{
max = list[i][j];
}
}
}
return max;
}
}
您的内部 for 循环仅迭代两次,因为它引用了外部列表的长度。它应该引用内部列表的长度
for (int j=0; j<list[i].length; j++){
...
}
此外,您的索引从 1 开始,因此您将跳过整个第一个内部数组,以及所有其他数组的第一个元素。