我对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名在不同的方式,也将不胜感激。
2条答案
按热度按时间piztneat1#
在这里声明您的
arrSize
并尝试在此处设置它的值
arrSize[index]
处的对象是一个数组。请记住,2D阵列基本上如下所示:
因为index是一个整数,所以你需要调用arrSize[0],它包含
arrSize[0][0]
和arrSize[0][1]
。Integer.MIN_VALUE
不是整数数组。它是int
。不能将int
赋给int[]
。ulmd4ohb2#
正如您在代码的其他部分所看到的,要访问2D数组arrSize中的值,在您的情况下(通常)需要两个索引
i
和j
。找到最大数字后,需要同时保存
i
和j
。然后
至于为什么会出现这个错误,
arrSize[i]
会得到一个1D数组。它仍然是一个数组,并且不能将数组设置为整数(Integer.MIN_VALUE
)。在Java中,错误消息中表示为int[]
。该算法可以改进,您可以使用大小与所需最大数字的个数相同的
maxArr
(在本例中为5),并使用for代替检查maxArr
中的所有数字,而不是使用单个整数max
保存最大值这意味着你可以删除索引(或者indexI和indexJ)和最上面的
for
循环(for (int p = 0; p < 5; p++)
),但这是另一个主题,你应该自己学习。