2016-03-27 19 views
1

Öyleyse, derslerime örnek olmak için bat.com'u kodlamada yapıyorum ve sorunlardan birine bakarak sıkışıp kaldım. Neden döngü-içi koşul deyiminde uzunluk-2 yapıyorlar? 2 neden çıkarmamız gerektiğini anlamıyorum, belki burada birileri bunu açıklayabilir. Bunu bilmiyorum çok basit bir şey biliyorum. Teşekkürler!Diziler için for döngüsüyle (java) sıkışmış. [i], [i + 1], [i + 2]

Soru: `

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` 

Çözüm: IndexOutOfBound istisna değil amacıyla

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; 
} 
+0

Sorunuzdaki yorumlara yorumunuz zaten yanıtlanmıştır. Nums.length kullanırsanız, bir ArrayIndexOutOfBoundsException ile sonuçlanırsınız. – RubioRic

+0

Yani i + 1 ve i + 2'yi kullanabileceğinizi söylüyor ancak bu bana açıklık getirmiyor. Üzgünüm, yeni başlayan biriyim. Neden ArrayIndexOutOfBounds istisnasıyla sonuçlandığımı bilmek istiyorum, istediğim buydu. – rcv6000

+0

Dizide yalnızca üç sayınız varsa, nums.length 3 olacaktır. Döngünün i olduğu 1 iterasyonunda, [i + 2] sayılarına erişmeye çalışırsanız, num [3'e erişmeye çalışıyorsunuz demektir. ] dizinizde mevcut olmayan bir konum. Üç uzunluklu bir dizide sadece 0, 1 ve 2 konumlarına sahipsiniz. – RubioRic

cevap

2

. -2'a sahip olup olmadığınızı ve son öğeye ulaştığınızı ve dizinde öğeye erişmeye çalıştığınızı düşünün (sonuncusu + 2), uygun olmayan bir dizine erişmek istediğiniz için istisna atar. .

+1

Bu mantıklı! Açıklama için teşekkürler, şimdi anladım. – rcv6000