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