[英]Removing the 0 value from a sorted Array?
我想知道是否有办法删除我运行以下代码时得到的默认“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.任何想法?
Java中的数组索引是从0开始的,而不是从1开始的。 所以从0开始迭代而不是从1开始迭代你应该是好的:
for ( int i = 0; i < x.length; i++ )
for(int i = 0 ; i <x.length; i ++)
当你分配一个大小为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。
以下代码应该有效:
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应该从0开始,而不是1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.