min and max value in 2d array java

佐手、 提交于 2019-12-02 03:59:01

问题


I want to output max and min value of 2d array. Max works well, but min always outputs zero even when theres no zeros in array.I set Math.random() to 99 to prevent smaller chance to get zero in array for this example. Heres full code:

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<a.length;j++)         // finds a max value
                if(a[i][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
            }
       }

回答1:


Because of the way you choose the random values in a, there will be no value less than zero - but there is also no guarantee that any of the values will be exactly zero. However, you initialize m to be zero, since that is the default value of the array elements; nothing can be smaller than this, so the answer is always zero.

You should initialize your m = a[0][0] immediately before you start the outer for loop in the block labelled "finds a min value", i.e.

    m = a[0][0];
    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];           //

        }
    }

Alternatively, you can set m = Integer.MAX_VALUE (and l = Integer.MIN_VALUE), since these are guaranteed to have values smaller and larger than them, respectively.



来源:https://stackoverflow.com/questions/29452190/min-and-max-value-in-2d-array-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!