6

その長さ-1を本当にいつ使用する必要があるのか​​ 、少し混乱しています。それは、範囲外のエラーが発生したくない場合です。たとえば、私はこの単純な配列を書きました:

    int [] oldArray = {1, 5, 6, 10, 25, 17};

    for(int i = 0; i < oldArray.length; i++){

エラーは発生しません。-1 が実際に役立つ例はありますか? 前もって感謝します。

4

11 に答える 11

7

oldArray.lengthあなたの例のように、通常はforループ呼び出しで使用したい

for(int i = 0; i < oldArray.length; i++) {
    //Executes from i = 0 to i = oldArray.length - 1 (inclusive)
}

iが から0まで上昇するoldArray.length - 1が、 で正確に停止するoldArray.length(そして実行されない)ことに注意してください。配列は0ではなくposition から始まるため1、old.Array.length はi停止すべき数値に完全に適合します。代わりに配列が position で始まる場合1、for ループは次のようになります。

for(int i = 1; i <= oldArray.length; i++) {
    //Executes from i = 1 to i = oldArray.length (inclusive)
}

oldArray.length - 1通常、最後の要素にアクセスします。

int[] oldArray = {1,2,3,4,5};
int lastElement = oldArray.length - 1; // 4
oldArray[lastElement] // returns last element, 5

これは通常length - 1vsを使用する場合ですlengthが、他にも 1 つが必要な場合が他にもたくさんあるため、具体的な答えはありません。でも心配しないで、コーディングを続けてください。すぐにコツがつかめます ;)

于 2013-10-21T03:59:59.267 に答える
5
for(int i = 0; i < oldArray.length; i++)

と同等です

for(int i = 0; i <= oldArray.length - 1; i++)
于 2013-10-21T04:01:25.640 に答える
3

ループおよび配列ユーティリティ メソッドはarray.length、「最後の要素まで」を意味するために使用できます。

私が考えることができる唯一の場所はarray.length - 1、最後の要素にアクセスするときです。たとえば、配列内の最大数を見つける場合です。

int[] array;
Arrays.sort(array);
int largest = array[array.length - 1];
于 2013-10-21T03:59:28.440 に答える
1

これは、何をしたいかによって完全に異なります。配列には、もののコレクションがあります。たとえば、小学校でこの配列 [1,2,3,4] を見せられて、そこにいくつ入っているか尋ねられたら、4 と答えるでしょう。1 から数えますが、これは完全に合理的です。その配列の 3 番目は何かと聞かれたら、3 を指します。ただし、コーディングを行っているので、配列はゼロから始まることがわかります。そのため、その配列にはまだ 4 つの要素がありますが、それらの名前は変更されています。現在、1 の名前はゼロ、2 の名前は 1、3 の名前は 2、4 の名前は 3 です。したがって、ループを使用していて、ループにすべてのことを実行させたい場合 (配列を検索している場合など)、.length を使用すると、ループが実行されます。ただし、配列内の数値 4 に具体的にアクセスしたい場合、4 の名前は 4 ではなく 3 です! インデックスに関しては、物理的なものに付けられた新しい名前を使用しているため、長さ-1 を使用します。

于 2016-09-04T07:44:57.353 に答える
0

簡単に言えば、配列には 6 つの要素がありますが、配列のインデックスは 0 から始まります。つまり、最初の要素のインデックスは 0、2 番目の要素は 1、...、6 番目の要素は 5 です。にアクセスoldArray[6]すると、エラーが発生します。あなたが示すループでは、これは決して当てはまりません:

for(int i = 0; i < oldArray.length; i++)

oldArray.lengthiは 6 を返します。 の値が 6になるとループが中断されるため、ループで到達した の最大値は 5iです。これがエラーがない理由です。したがって、質問に直接答えるoldArray[oldArray.length - 1]には、配列の最後の要素を返します。

于 2013-10-21T03:57:30.087 に答える
0

以下のように書くこともできます:

for(int i = 0; i <= oldArray.length-1; i++){

oldArray.length-1その特定の要素、つまり配列の最終要素が必要な場合に必要です。

すなわちoldArray[oldArray.length-1]

于 2013-10-21T03:57:58.990 に答える
0

The main rule is to remember is the Array is starts with 0. While .length is returns the actual number of array, so length do not count or start with 0

So, as per your example:

  int [] oldArray = {1, 5, 6, 10, 25, 17};

Here in your example below

 for(int i = 0; i < oldArray.length; i++){}

The i starts with 0 and loop continue till i value as 5 as you are using < only.

If you try to use <= it will fail again, as you try to assess 7th(0-6) element which is not present.

Now take a another example as below, where we try to reverse a string:

    String name="automation";
    
    System.out.println(name.length());
    
    for(int i=name.length()-1;i>=0;i--) {
        System.out.print(name.charAt(i));
    }

Output:

10

noitamotua

Now in above example if you don't use -1 the value 10 will be pass inside the loop, as the length return 10 as per length of string but for array 10th element not present as array starts with 0 so it require till 9th place only as per above example , if you pass 10 it will throw error as 10th position is not present for it, thats why we need to use -1 at least for decrements(i--) order for sure

于 2020-02-02T21:17:06.747 に答える