java 如何从二维随机数数组中获取前5个数字

polhcujo  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(147)

我对java还是个新手,刚刚开始学习二维数组。我正在尝试从一个随机列表中显示前5个数字。我认为这可以工作,但不确定为什么我会得到一个错误。另一件事是我不能使用排序函数。
此处代码:

public static void main(String[] args) {
 //Random Number stuff
        Random rand = new Random();
        
        int[] large = new int [5];
        
        int max = 0, index;

        int[][] arrSize = new int [4][5];
        
        
        for (int i = 0; i < arrSize.length; i++) {
            for (int j=0; j< arrSize[i].length; j++) {
                arrSize[i][j] = rand.nextInt(89) + 10;
                
                System.out.print(arrSize[i][j] + " ");
            }
                
            System.out.println();
            
        }
        // Top 5
        for (int p = 0; p < 5; p++) {
        max = arrSize [0][0];
        index = 0;
        
        for (int i = 0; i < arrSize.length; i++) {
            for (int j = 0; j < arrSize[i].length; j++) {
                
                if (max < arrSize[i][j]) {
                    
                    max = arrSize[i][j];
                    index = i;
                    
                }
        }
        }
        
        
        large[p] = max;
        arrSize[index] = Integer.MIN_VALUE;  //Error here
        
            System.out.println("Highest Number: " + large[p]);
    }
 
}
}

错误文本:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from int to int[]

    at secondAssignment.BiggestNumbersRectangular.main(BiggestNumbersRectangular.java:47)

我不知道为什么我会得到一个错误,任何帮助将不胜感激。如果其他人有任何答案,我如何可以得到前5名在不同的方式,也将不胜感激。

piztneat

piztneat1#

在这里声明您的arrSize

int[][] arrSize = new int [4][5];

并尝试在此处设置它的值

arrSize[index] = Integer.MIN_VALUE;

arrSize[index]处的对象是一个数组。
请记住,2D阵列基本上如下所示:

arrSize
  - arrSize[0]
    - arrSize[0][0]
    - arrSize[0][1]
  - arrSize[1]
    - arrSize[1][0]
    - arrSize[1][1]
  - arrSize[2]
    - arrSize[2][0]
    - arrSize[2][1]
  - arrSize[3]
    - arrSize[3][0]
    - arrSize[3][1]

因为index是一个整数,所以你需要调用arrSize[0],它包含arrSize[0][0]arrSize[0][1]
Integer.MIN_VALUE不是整数数组。它是int。不能将int赋给int[]

ulmd4ohb

ulmd4ohb2#

正如您在代码的其他部分所看到的,要访问2D数组arrSize中的值,在您的情况下(通常)需要两个索引ij
找到最大数字后,需要同时保存ij

if (max < arrSize[i][j]) {
   max = arrSize[i][j];
   indexI = i;
   indexJ = j;
}

然后

arrSize[indexI][indexJ] = Integer.MIN_VALUE;

至于为什么会出现这个错误,arrSize[i]会得到一个1D数组。它仍然是一个数组,并且不能将数组设置为整数(Integer.MIN_VALUE)。在Java中,错误消息中表示为int[]
该算法可以改进,您可以使用大小与所需最大数字的个数相同的maxArr(在本例中为5),并使用for代替检查maxArr中的所有数字,而不是使用单个整数max保存最大值

if (max < arrSize[i][j]) {
   max = arrSize[i][j];
   index = i;
}

这意味着你可以删除索引(或者indexI和indexJ)和最上面的for循环(for (int p = 0; p < 5; p++)),但这是另一个主题,你应该自己学习。

相关问题