私は中期的に練習して問題の1つを見て、例を挙げてbat.comをコーディングしていました。なぜ彼らはforループ条件文でlength-2をやっているのですか?私はなぜ2を減算しなければならないのでしょうか、おそらくここで誰かがすぐにそれを説明することができます。私はそれが私が得ていない非常に単純なことを知っています。ありがとう!配列のforループ(java)に固執しています。 [i]、[i + 1]、[i + 2]
質問: `
Given an array of ints, return true if .. 1, 2, 3, .. appears in the array somewhere.
array123({1, 1, 2, 3, 1}) → true
array123({1, 1, 2, 4, 1}) → false
array123({1, 1, 2, 1, 2, 3}) → true`
ソリューション:IndexOutOfBound例外をスローしないようにするためには
public boolean array123(int[] nums) {
// Note: iterate < length-2, so can use i+1 and i+2 in the loop
for (int i=0; i < (nums.length-2); i++) {
if (nums[i]==1 && nums[i+1]==2 && nums[i+2]==3) return true;
}
return false;
}
あなたの質問は、ソリューションに含まれているコメントに既に回答済みです。 nums.lengthを使用すると、ArrayIndexOutOfBoundsExceptionが発生します。 – RubioRic
それはあなたがi + 1とi + 2を使うことができるように言いますが、それは私には分かりません。申し訳ありません、私は初心者です。なぜArrayIndexOutOfBounds例外が発生するのか知りたいのですが、それは私が求めていることです。 – rcv6000
配列に3つの数字しかない場合、nums.lengthは3になります。ループの2番目の反復で、iが1の場合、num [i + 2]にアクセスしようとすると、num [3 ]、あなたの配列に存在しない位置。 3つの長さの配列には、位置0,1、および2しかありません。 – RubioRic