Arrays.sort函数如何工作?

时间:2019-01-16 16:24:24

标签: java arrays sorting

我是Java编程的新手,我正在尝试使用 Arrays.sort()函数对数组进行排序。使用 Arrays.sort(array)之后,我将打印最终的排序数组。

例如:

输入: 1 3 2 4

输出为: 0 0 0 0

import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
public class TestClass {
     public static final int MAX_SIZE = 20;
     public static void main(String[] args) { 
        Scanner input = new Scanner(System.in);
        int n,temp,count;
        int[] array = new int[MAX_SIZE]; 
        n = input.nextInt();
        for(int i = 0 ; i < n ; ++i) {
          array[i] = input.nextInt(); 
        }
       Arrays.sort(array);
        for(int i = 0 ; i < n ; ++i) {
          System.out.print(array[i]+" ");
        }
    }
}

3 个答案:

答案 0 :(得分:9)

您已初始化数组以容纳20个整数,但仅输入5个。因此,对数组进行排序后,前15个元素将为0,后跟您输入的数字。

要解决此问题,您可以使用n而不是MAX_SIZE初始化数组,如下所示:-

n = input.nextInt();
int[] array = new int[n];

答案 1 :(得分:1)

设置数组的大小以匹配输入内容,而不是允许的最大大小:

public class TestClass {
    public static final int MAX_SIZE = 20;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n, temp, count;

        n = input.nextInt();
        if (n > MAX_SIZE) {
            //handle error somehow
        }
        int[] array = new int[n];
        for (int i = 0; i < n; ++i) {
            array[i] = input.nextInt();
        }
        Arrays.sort(array);
        for (int i = 0; i < n; ++i) {
            System.out.print(array[i] + " ");
        }
    }
}

答案 2 :(得分:1)

在Java中初始化数组时,它会为原始0获取int的默认值:

int[] array = new int[MAX_SIZE]; 

您没有看到1,2,3,4的期望输入是Scanner代码的另一个问题。