【发布时间】:2015-04-05 06:50:04
【问题描述】:
我想输出二维数组的最大值和最小值。 Max 运行良好,但即使数组中没有零,min 也始终输出零。我将 Math.random() 设置为 99,以防止在此示例中在数组中获得零的机会更小。以下是完整代码:
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
}
}
【问题讨论】:
-
将值更改为随机数后,数组中可能没有零,但是当您使用
int m = a[0][0];初始化m时,数组中肯定有零,这就是为什么m仍然存在0打印时。 -
@jedwards 这不是问题,在
m = a[0][0]它只是定义了二维数组中的第一个整数 -
这绝对是问题所在。当您在那里初始化
m时,a[0][0]为 0。因此,当您运行循环时,您永远不会找到小于m的值,因此m保持不变为 0。通过使用安迪的解决方案(这是正确的) ,您将m重新分配为矩阵中的任意值,从而使您的循环能够正确找到最小值。 -
@jedwards ou 现在我明白了,我的错误,现在我明白了,感谢您的回复和向我解释