5个表中最大的Nums - java

时间:2017-03-10 22:22:37

标签: java netbeans

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

2 个答案:

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