4

我想知道是否有办法删除我在运行以下代码时得到的默认“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

4 回答 4

5

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

for ( int i = 0; i < x.length; i++ )
于 2011-01-13T03:16:20.367 回答
3

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

于 2011-01-13T03:17:15.513 回答
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();

不过,其他答案建议的更改更为常见。大多数程序员会让 i 从 0 变为 2,然后在与用户交谈时输出 i+1。

于 2011-01-13T03:23:25.430 回答
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。

于 2011-01-13T03:22:11.013 回答