[英]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.