簡體   English   中英

從已排序的數組中刪除0值?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM