从已排序的数组中删除0值?

时间:2011-01-13 03:14:13

标签: java arrays sorting default zero

我想知道是否有办法删除运行以下代码时得到的默认“0”值:

Scanner scan = new Scanner(System.in);

int [] x = new int[4];
for ( int i = 1; i < x.length; i++ )
{
    System.out.println( "Enter number " + i + ": ");
    x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));
}

输出如下

[0, i[1], i[2], i[3]]

当然,这里的所有数组值实际上都是输入控制台的数字。 代码是工作。它成功地将任何数字排序到正确的顺序,然而,总是有这个令人讨厌的0。

我不打算删除所有0(我希望用户能够输入0并让它显示) - 我只是不想要默认的0.任何想法?

4 个答案:

答案 0 :(得分:5)

Java中的数组索引是从0开始的,而不是从1开始的。所以从0开始迭代而不是从1开始迭代你应该是好的:

for ( int i = 0; i < x.length; i++ )

答案 1 :(得分:3)

for(int i = 0 ; i&lt; x.length; i ++)

答案 2 :(得分:2)

当你分配一个大小为4的数组时,你要分配四个整数:i [0],i [1],i [2]和i [3]。因为Java非常友好,所以它将所有这四个设置为0.所以你在输出上看到的是[i[0],i[1],i[2],i[3]](按排序顺序)。排序不是添加0,它已经存在了。如果你只想要3个数字,那么你应该分配一个int [3]而不是int [4]。然后,与此同时,当您要求编号1时,将其存储在i [0]中。这样做的最简单的改变就是简单地将顶行更改为

 int [] x = new int[3];

以及后一行

 x[i-1] = scan.nextInt();

其他答案所暗示的变化是更常见的,但是。大多数程序员都会从0到2,然后在与用户交谈时输出i + 1.

答案 3 :(得分:0)

以下代码应该有效:

Scanner scan = new Scanner(System.in);

int[] x = new int[3];
for (int i = 0; i < x.length; i++)
{
  System.out.println( "Enter number " + i + ": ");
  x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));

正如其他人所指出的那样,问题是你的int i应该从0开始,而不是1。