我需要声明大小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];