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
}
}
mwithint m = a[0][0];which is whymremains0when your print it.m = a[0][0]it just define first integer in 2d arraymthere,a[0][0]is 0. So when you run your loop, you never find a value less thanm, somremains unchanged as 0. By using Andy's solution (which is correct), you're reassigningmto be an arbitrary value in the matrix, allowing your loop to correctly find the minimum value.