我是Java新手,这是我的第一周,我没有做任何功课,但我想练习这门语言。
我需要从数组中获取5个最大的数字,并将它们存储在另一个数组中。
在论坛中搜索后,我找到了Arrays.sort()
方法,我对Java感到非常惊讶。但我的代码不对。我找不到原因......你能帮助我吗?
package week1;
import java.util.Arrays;
public class Week1 {
public static void main(String[] args) {
int maxValues[] = new int [5];
int array[] = new int [50];
for (int i = 0; i <array.length; i++) {
int x = (int) ( Math.random() * 100 );
array[i]=x;
System.out.println("The Number is: " + array[i]);
}
Arrays.sort(array);
for (int i = 0; i < maxValues.length; i++) {
for (int j =array.length; j > (array.length)-5; j--) {
maxValues[i]=array[j];
}
System.out.println( (i+1) +"Max is: " + maxValues[i] );
}
}
}
答案 0 :(得分:0)
将int j =array.length
更改为int j =array.length-1
。如果您从array[50]
开始,您将获得ArrayIndexOutOfBoundsException
,因为此数组中的最高索引为49(array.length-1
)
答案 1 :(得分:0)
您不需要两个for循环来查找最大值并存储它们。你知道你的int数组中最大的数字在哪里, array.length - 1 。下一个最高的是array.length - 2,array.length - 3,依此类推。只需要确保当你递减索引是> = 0时,以避免数组索引超出范围异常。您之前的代码尝试访问array.length作为索引,但因为数组基于0而该索引不存在,这就是当您尝试在索引50但最后一个索引处找到最高数字时,您获得数组超出范围的原因那个大小的数组是49.
int maxValues[] = new int [5];
int array[] = new int [50];
for (int i = 0; i <array.length; i++) {
int x = (int) ( Math.random() * 100 );
array[i]=x;
System.out.println("The Number is: " + array[i]);
}
Arrays.sort(array);
int index = array.length - 1;
for (int i = 0; i < maxValues.length && index >= 0; i++) {
maxValues[i]=array[index];
index--;
System.out.println( (i+1) +"Max is: " + maxValues[i] );
}