| English | 意味 |
|---|---|
| StringIndexOutOfBoundsException/strɪŋ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | 文字列インデックス超出範囲例外 |
文字へのループ
- Stringを処理するには、
0からlength() - 1までのインデックスでループします。 for (int i = 0; i < s.length(); i++) { ... s.substring(i, i+1) ... }s.substring(i, i+1)はインデックスiにおける1文字のStringを返します。- これは順序通りすべての文字を訪問します — 多くのStringアルゴリズムの基礎です。
文字のカウント
- ループを
ifと組み合わせて、一致する文字をカウントします。 - 「母音のカウント」: ループし、現在の文字が母音なら
if、count++。 - 2.9の累加器パターンはStringにそのまま適用されます。
- 文字を**
.equals()**で比較し、==で比較しないでください。
新しいStringの構築
- テキストを変換するには、Stringは不変(immutable)であるため、
+で新しいStringを積み上げます。 - ループ内で
String result = "";の後にresult = result + something;を行う。 - "Stringを逆転させる": 最後から先へ向かって各文字を追加します。
- 元のStringは変化しません — 新しいStringを蓄積します。
インデックスの境界
- 有効なインデックスは
0からlength() - 1です。外に出るとStringIndexOutOfBoundsExceptionが発生します。 s.substring(i, i+1)はi < s.length()の間だけ安全です。- ループ条件
i < s.length()はiを範囲内に保ちます。 - オフ・バイ・ワン境界は最も一般的なStringループのバグです。
ループで文字列のインデックスをi < s.length()で扱い、i <= s.length()で扱わない。 有効な最後のインデックスはlength() - 1であり、インデックスlength()にアクセスするとStringIndexOutOfBoundsExceptionが発生する。変換されたテキストを新しい文字列を蓄積して構築すること(result += ch)。文字列は不変(immutable)であるため、インプレースでは編集できない。
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"に含まれる場合にカウントします。
Stringをそのインデックスをループして 0 から length()-1 (条件 i < s.length() )処理し、s.substring(i, i+1) で各文字を読み取ります。if でカウントするか、+ で蓄積することで新しいStringを構築します(Stringは不変)。境界内に留まればStringIndexOutOfBoundsExceptionを回避できます。
HELLOの文字をループで処理する
ループはインデックス0からlength()-1まで訪問します。
文字列sのすべての文字を訪問するための正しいループ条件は...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
有効なインデックスは0..length()-1なので、i < s.length()です。
文字列sのs.length()のインデックスにアクセスすると...が発生します
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
最終の有効インデックスはlength()-1です。
逆順の文字列を構築する場合、文字列は不変体なので、...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
文字列は不変体です — 新たなものを作成してください。
ループで文字列"HELLO"を何文字訪問しますか(i < length()を使用)?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
インデックス0..4 → 5文字。
ループからの蓄積器パターンは、文字列内の文字数を数えることにも適用されます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
インデックスループ内の count++ は一致する文字数を数えます。