如何在java中对数组进行排序?

如何在java中对数组进行排序?,java,arrays,sorting,Java,Arrays,Sorting,用户必须进行输入。我的代码如下。为什么它只输出零?解决办法是什么 程序的输出为0(输入总数) 导入java.util.array; 导入java.util.Scanner; 至少公开课{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); int n=input.nextInt(); int[]数组=新的int[107]; 对于(int i=0;i

用户必须进行输入。我的代码如下。为什么它只输出零?解决办法是什么

程序的输出为
0
(输入总数)

导入java.util.array;
导入java.util.Scanner;
至少公开课{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int n=input.nextInt();
int[]数组=新的int[107];
对于(int i=0;i
您正在初始化一个包含107个值0的表。 因此,如果
n
较小,则第一个元素将为0


要查看结果,将最后一个循环中的n替换为107,您将看到值

,您初始化了一个大小为107的数组,这意味着在接受用户输入之前,数组中最初有107个零。因为输出中有四个零,所以必须取4个值作为输入。因此,数组中有四个非零值和103个零值。应用数组时。排序103个零位于4个非零值之前。因此,当您打印n个值(在本例中为4)时,只会得到零。
您可以改用ArrayList,这样数字只有在用户输入时才会被初始化。

Java编程惯例使用camelCase格式的标识符,类以大写字母(AtLast)开头,变量和方法以小写字母开头。您已经初始化了一个大于空格的数组。因此,正如@Mhamad在回答中所解释的那样,这导致了问题。您可以通过像int n=input.nextInt()这样分配输入值来避免它;int[]数组=新的int[n];
import java.util.Arrays;
import java.util.Scanner;

public class atlast {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int n = input.nextInt();
        int[] array = new int[107];
        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] + " ");
        }
    }
}
int[] array = new int[107];