יישום אלגוריתמי שרשראות
הוצג| English | משמעות |
|---|---|
| StringIndexOutOfBoundsException/strɪŋ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | שגיאת StringIndexOutOfBoundsException |
לולאה על תווים
- כדי לעבד String, חזרו על אינדקסים שלו מ-
0עדlength() - 1. for (int i = 0; i < s.length(); i++) { ... s.substring(i, i+1) ... }s.substring(i, i+1)מחזיר את ה-String בעל האות הבודדת באינדקסi.- זה מבקר בכל תווית בסדר — הבסיס של רוב אלגוריתמי ה-String.
ספירת תווים
- שילבו את הלולאה עם
ifכדי לספור תווים המתאימים. - "ספירת תנועות": לולאה, ואם
ifהתווה הנוכחי הוא תנועה,count++. - דוגמת המצטבר מ-2.9 חלה ישירות על מחרוזות.
- השוואת תווים עם
.equals(), לא==.
בניית מחרוזת חדשה
- למרה טקסט, יש לבנות מחרוזת חדשה באמצעות
+, שכן מחרוזות בלתי ניתנות לשינוי. String result = "";ולאחר מכןresult = result + something;בתוך הלולאה.- "הפיכת מחרוזת": הוספת כל תווה מהסוף לכיוון ההתחלה.
- המקור לעולם אינו משתנה — אתה מצטבר מחרוזת חדשה.
גבולות אינדקס
- אינדקסים תקפים נעים מ
0עדlength() - 1; מעבר מחוץ להם גורם ל-StringIndexOutOfBoundsException. s.substring(i, i+1)בטוח רק כל עודi < s.length().- תנאי הלולאה
i < s.length()שומר עלiבתחום התקין. - שגיאת גבולות של סטייה אחת היא הבג הגרוע ביותר בשכיחות בלולאות מחרוזות.
עבור על אינדקסי מחרוזת עם i < s.length(), לא i <= s.length(). האינדקס התקין האחרון הוא length() - 1; מגיע לאינדקס length() גורם ל-StringIndexOutOfBoundsException. ובונה טקסט ממורה באמצעות הצטברות של מחרוזת חדשה (result += ch) — אין עריכה של מחרוזת באתר, שכן מחרוזות בלתי ניתנות לשינוי.
ספירת תנועות ב-s:
int count = 0;for (int i = 0; i < s.length(); i++) { String ch = s.substring(i, i+1); if ("aeiou".indexOf(ch) >= 0) count++; }- מבקר בכל תווה; סופר אותו אם הוא מופיע ב-
"aeiou".
מעבד מחרוזת על ידי לולאה על אינדקסי המחרוזת מ0 עד length()-1 (תנאי i < s.length()), קריאת כל תווה באמצעות s.substring(i, i+1). ספירה עם משתנה if, או בניית מחרוזת חדשה באמצעות הצטברות עם + (מחרוזות בלתי ניתנות לשינוי). הישארות בתחום המותר מונעת StringIndexOutOfBoundsException.
איטרציה על הדמויות של HELLO
לולאה מבקרת אינדקסים מ-0 עד length()-1.
התנאי הנכון ללולאה כדי לבקר על כל הדמות ב-String s הוא...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
המדדים החוקיים הם 0..length()-1, ולכן התנון הוא i < s.length().
ניסיון לגשת למדד s.length() של מחרוזת גורם ל...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
המדד האחרון החוקי הוא length()-1.
כדי לבנות מחרוזת הפוכה, מכיוון שמחרוזות בלתי ניתנות לשינוי (immutable), עליך...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מחרוזות בלתי ניתנות לשינוי — יש לבנות אחת חדשה.
כמה תווים עובר מחזור על המחרוזת "HELLO" (בשימוש ב-i < length())?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
המדדים 0..4 → 5 תווים.
תבנית הצטברות ממחזורים חלופיים גם היא חלה על ספירת תווים במחרוזת.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הפעלת count++ בתוך מחזור אינדקס סופרת את התווים המתאימים.