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 の配列インデックスは、1 ベースではなく 0 ベースです。したがって、1 からではなく 0 から反復を開始すると、うまくいくはずです。

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]の4つのintを割り当てます。Javaはかなり使いやすいため、これら4つすべてを0に設定します。したがって、出力に表示されるのは[i[0],i[1],i[2],i[3]](ソートされた順序で)です。ソートは0を追加していません、それはすでにそこにありました。3つの数値のみが必要な場合は、int[4]ではなくint[3]を割り当てる必要があります。そして、それに合わせて、1番を要求したら、それをi[0]に格納します。これを行うための最も簡単な変更は、トップラインを次のように変更することです。

 int [] x = new int[3];

そして後の行は

 x[i-1] = scan.nextInt();

ただし、他の回答で提案されている変更の方が一般的です。ほとんどのプログラマーは、私が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));

問題は、他の人が指摘しているように、intiは1ではなく0から開始する必要があるということでした。

于 2011-01-13T03:22:11.013 に答える