我是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]+" ");
}
}
}
答案 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
代码的另一个问题。