应用Array.sort()函数后,数组元素变为0

时间:2017-01-14 17:33:41

标签: java arrays sorting java.util.scanner

我正在尝试使用$ redis-cli LPUSH key1 value1 value2 value3 (integer) 3 $ redis-cli LPUSH key2 value1 value3 value4 (integer) 3 $ redis-cli --eval ldiff.lua key1 key2 1) "value2" 方法对整数数组进行排序。调用此方法后,数组元素变为0。

以下是我的代码

Arrays.sort()

输入:

  

5 3 3 1 1 1

输出:

  

注意:1 1 1
  注意:0 0 0
  总和:0
  总和:0
  总和:0
  否

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

你的数组不只有3个元素,因为这行很长:

int notes[] = new int[20];

如果要查看问题的原因,请添加以下行:

System.out.println(Arrays.toString(notes));
在你第一次之前

System.out.println("note:"+notes[0]+" "+notes[1]+" "+notes[2]);

行,您将看到整个数组:

[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这就是为什么你在排序后的前3个地方看到0的原因,因为该数组在0之后还包含很多1个。

因此,sort方法具有预期的行为。

答案 1 :(得分:1)

这是因为声明一个更大的数组并在数组中插入小于数组长度的值,所以在数组的其余部分将存储0,因此当u进行排序和打印时,所有的0都会出现在开头。 >