我想输出二维数组的最大值和最小值。Max可以很好地工作,但是即使在数组中没有零的情况下min也总是输出零Math.random()。在本例中,我设置为99以防止较小的机会在数组中获得零。继承人完整代码:
Math.random()
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 } }
由于您在中选择随机值的方式a,不会存在小于零的值- 但也无法保证任何值都将恰好为零。但是,您将初始化m为零,因为这是数组元素的默认值;没有什么比这更小了,所以答案总是零。
a
m
您应该m = a[0][0]在标记为“查找最小值”的块中开始外部for循环之前立即初始化。
m = a[0][0]
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]; // } }
另外,您可以设置m = Integer.MAX_VALUE(和l = Integer.MIN_VALUE),因为可以保证它们的值分别小于和大于。
m = Integer.MAX_VALUE
l = Integer.MIN_VALUE