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

标签 java max min

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


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]);
      }



  }
}

最佳答案

不要同时输入和排序,因为元素可能仍会使用默认值(即 0)进行初始化。此外,在外循环中,将 maxmin 重置为列的第一个元素。

按如下方式进行:

import java.util.Random;

public class Main {
    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;
        int max;

        for (int i = 0; i < t.length; i++) {
            for (int j = 0; j < t[i].length; j++) {
                t[i][j] = r.nextInt(10) - 5;
                System.out.printf("%4d", t[i][j]);
            }
            System.out.println();
        }

        for (int i = 0; i < t.length; i++) {
            min = t[0][i];
            max = t[0][i];
            for (int j = 0; j < t[i].length; 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;
        }

        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]);
        }
    }
}

示例运行:

   3  -4   2   0   1
  -2  -2   4  -1  -2
  -3   1   4  -1   0
  -4   4  -2  -5   2
  -5  -3  -3  -4  -1
Max Column 0: 3
Max Column 1: 4
Max Column 2: 4
Max Column 3: 0
Max Column 4: 2
Min Column 0: -5
Min Column 1: -4
Min Column 2: -3
Min Column 3: -5
Min Column 4: -2

注意事项:

  1. 我已将 r.nextInt(6)-5 更改为 r.nextInt(10) - 5 以生成负数、0 和正数的混合以便您可以快速验证结果。您可以根据需要将其改回 r.nextInt(6)-5
  2. 我还使用 printf 而不是 print 来打印每个数字,每个数字的间距为 4 个单位。如果您愿意,可以将其改回 print
  3. 根本不需要使用 Integer.MAX_VALUE 和/或 Integer.MIN_VALUE 来解决这个问题。

如有任何疑问,请随时发表评论。

关于java - 在数组的每一列中查找最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139922/

相关文章:

java - 如何从我的程序创建 Jar 文件

java - 设计一个比较器来排序单词,以便每个单词的最后一个字母是下一个单词的第一个字母?

linux - 删除重复项并保留包含一列最大值的行 - LINUX

reference - 在 Rust 中,为什么 std::iter::Iterator 的 min 函数返回一个引用?

sql-server - 如何查找具有重复值的 MIN 并将 MIN 值替换为 varchar

java - 线程安全的java有限状态机(FSM)

java - Tomcat 8.5 gzip 压缩不起作用

PHP消息线程系统

sql - 使用 min/max 的嵌套 SQL 查询返回了太多的记录(这是新的)

java - 在二维数组中查找行的最大值和列的最小值