2d数组java中的最小值和最大值

我想输出2d数组的最大值和最小值。 Max工作得很好,但是即使数组中没有零,min也总是输出零。我将Math.random()设置为99,以防止在这个例子中数组中获得零的机会更小。 Heres完整代码:

 public class e { public static void main(String[] args) { int a[][] = new int [5][5]; int l = a[0][0]; int m = a[0][0]; int i,j,r,k; for(i=0;i<a.length;i++) // for(j=0;j<a[i].length;j++){ // 2d array random number generator a[i][j] =(int)(Math.random()*99); // } for(i=0;i<a.length;i++){ // for(j=0;j<a[i].length;j++) // // create 2d array and output it System.out.print(a[i][j] + "\t"); // System.out.println(); // } System.out.println("\t"); for(r=0;r<a.length;r++){ // for(k=0;k<a.length;k++) // if(a[r][k] < m){ // finds a min value m = a[r][k]; // } } System.out.println("\t"); // for(i=0;i<a.length;i++){ // for(j=0;j l){ // l = a[i][j]; // } } System.out.println("min value is " + m); //outputs min value System.out.println("max value is " + l); // outputs max value } } 

由于您在a选择随机值a ,将没有小于零的值 – 但也不能保证任何值都将精确为零。 但是,将m初始化为零,因为这是数组元素的默认值; 没有什么比这更小,所以答案总是零。

您应该在标记为“查找最小值”的块中启动外部for循环之前立即初始化m = a[0][0] ,即

  m = a[0][0]; for(r=0;r 

或者,您可以设置m = Integer.MAX_VALUE (和l = Integer.MIN_VALUE ),因为它们分别保证具有比它们更小和更大的值。