调用arrays.sort()在数组中使所有值零



我需要声明大小10001的数组,然后需要对该数组进行排序。但是,当我调用arrays.sort方法时,数组中的所有元素都会更改为零。为什么??

import java.util.*;
class Candy
{
    static int[] array = new int[10001];
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int i, sum=0, count=0;
        while(N != -1)
        {
            //int array[] = new int[10001];
            for(i=0; i<N; i++)
            {
                array[i] = sc.nextInt();
                sum = sum + array[i];       
            }
            if(sum%N != 0)
            {
                System.out.println("-1");
            }
            else if(sum%N == 0)
            {
                java.util.Arrays.sort(array);
                int k = sum/N;
                for(i=0; i<N; i++)
                {
                    while(array[i]>k)
                    {
                        array[i]--;
                        count++;
                    }
                }
                System.out.println(count);
            }
            N = sc.nextInt();   
        }
    }
}

预先感谢您!

您的数组具有10001元素(static int[] array = new int[10001];),并且仅填充其第一个N索引。所有其余索引默认包含0,当您对数组进行排序时,这些0s移动到前面(假设您仅输入正数)。

知道n:

,您应该创建数组
int N = sc.nextInt();
array = new int[N];

最新更新