その長さ-1を本当にいつ使用する必要があるのか 、少し混乱しています。それは、範囲外のエラーが発生したくない場合です。たとえば、私はこの単純な配列を書きました:
int [] oldArray = {1, 5, 6, 10, 25, 17};
for(int i = 0; i < oldArray.length; i++){
エラーは発生しません。-1 が実際に役立つ例はありますか? 前もって感謝します。
その長さ-1を本当にいつ使用する必要があるのか 、少し混乱しています。それは、範囲外のエラーが発生したくない場合です。たとえば、私はこの単純な配列を書きました:
int [] oldArray = {1, 5, 6, 10, 25, 17};
for(int i = 0; i < oldArray.length; i++){
エラーは発生しません。-1 が実際に役立つ例はありますか? 前もって感謝します。
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 - 1
vsを使用する場合ですlength
が、他にも 1 つが必要な場合が他にもたくさんあるため、具体的な答えはありません。でも心配しないで、コーディングを続けてください。すぐにコツがつかめます ;)
for(int i = 0; i < oldArray.length; i++)
と同等です
for(int i = 0; i <= oldArray.length - 1; i++)
ループおよび配列ユーティリティ メソッドはarray.length
、「最後の要素まで」を意味するために使用できます。
私が考えることができる唯一の場所はarray.length - 1
、最後の要素にアクセスするときです。たとえば、配列内の最大数を見つける場合です。
int[] array;
Arrays.sort(array);
int largest = array[array.length - 1];
これは、何をしたいかによって完全に異なります。配列には、もののコレクションがあります。たとえば、小学校でこの配列 [1,2,3,4] を見せられて、そこにいくつ入っているか尋ねられたら、4 と答えるでしょう。1 から数えますが、これは完全に合理的です。その配列の 3 番目は何かと聞かれたら、3 を指します。ただし、コーディングを行っているので、配列はゼロから始まることがわかります。そのため、その配列にはまだ 4 つの要素がありますが、それらの名前は変更されています。現在、1 の名前はゼロ、2 の名前は 1、3 の名前は 2、4 の名前は 3 です。したがって、ループを使用していて、ループにすべてのことを実行させたい場合 (配列を検索している場合など)、.length を使用すると、ループが実行されます。ただし、配列内の数値 4 に具体的にアクセスしたい場合、4 の名前は 4 ではなく 3 です! インデックスに関しては、物理的なものに付けられた新しい名前を使用しているため、長さ-1 を使用します。
簡単に言えば、配列には 6 つの要素がありますが、配列のインデックスは 0 から始まります。つまり、最初の要素のインデックスは 0、2 番目の要素は 1、...、6 番目の要素は 5 です。にアクセスoldArray[6]
すると、エラーが発生します。あなたが示すループでは、これは決して当てはまりません:
for(int i = 0; i < oldArray.length; i++)
oldArray.length
i
は 6 を返します。 の値が 6になるとループが中断されるため、ループで到達した の最大値は 5i
です。これがエラーがない理由です。したがって、質問に直接答えるoldArray[oldArray.length - 1]
には、配列の最後の要素を返します。
以下のように書くこともできます:
for(int i = 0; i <= oldArray.length-1; i++){
oldArray.length-1
その特定の要素、つまり配列の最終要素が必要な場合に必要です。
すなわちoldArray[oldArray.length-1]
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