查找数组中每一列的最小值和最大值

问题描述 投票:1回答:4

我的程序有问题。我想在每一列中打印最小值和最大值,但是无法正常工作。我认为一切都应该没问题。当循环结束时,我重新启动最小值和最大值。


public class tablice2 {
  public static void main(String[] args){
      int t [][] = new int [5][5];
      int n [] = new int [5];
      int x [] = new int [5];
      Random r = new Random();
      int min  = t[0][0];
      int max = t[0][0];


      for (int i = 0; i <t.length ;i++){
          min = 0;
          max = 0;
          for(int j = 0; j < t[i].length ;j++){
            t[i][j] = r.nextInt(6)-5;
              System.out.print(t[i][j] + " ");

              if (t[j][i] < min){
                  min = t[j][i];
              }

              if (t[j][i] > max){
                  max = t[j][i];
              }

          }
          n[i]=min;
          x[i]=max;


          System.out.println(" ");
      }

      for(int p=0;p<x.length;p++){
          System.out.println("Max Column "+p + ": " +x[p] );
      }

      for(int k=0;k<n.length;k++){
          System.out.println("Min Column "+k + ": " +n[k]);
      }



  }
}
java max min
4个回答
1
投票

您已将min初始化为零,我建议Integer.MIN_VALUE。否则,不能“找到”正值。

这也是某人已经为您解决的问题,例如通过流:

assertThat(
        IntStream.of(new int[] { 1, 2, 3, 4, 5 }).max().getAsInt(), 
        is(5));

0
投票

您的第一个循环必须在列(j)上。

t[0].length

0
投票

我正在java中乞讨,所以当我从max = 0和min = 0切换到max = Integer.Min和min = Integer.Max时。一切都不会改变。


0
投票

首先进入循环,将min设置为min = Integer.MAX_VALUE,并类似地使用max = Integer.MIN_VALUE。这将为我们提供每个随机数(至少)小于初始化的最小值(与最大值相似)

在这种情况下,您所绘制的数字从-5到0,因此您可以将min设置为例如-6和max 1,然后确保所绘制的数字将大于-6且小于1,并且可以正确更新

在您的代码中,您混合了ij-应该是

if (t[i][j] < min){
    min = t[i][j];
}

以及其他类似的代码

另外,当您在Java中创建数组时,它会自动以0初始化。所以

int t [][] = new int [5][5];
int min  = t[0][0];

表示min = 0,因为所有数组都用0填充,因此您不必重复代码

© www.soinside.com 2019 - 2024. All rights reserved.