「範囲外」または「範囲外」は、配列、リスト、文字列、またはその境界を超える範囲を持つものを読み書きしようとすると発生します。文字列に 7 文字しか含まれていない場合、インデックス 8 の文字を読み取ることはできません。これは文字列の RAM ではなく、C アレイで時々発生するような RAM の破損を引き起こす可能性があります。
配列と for ループを設定するときは、コンテナーのサイズまたは長さ関数を使用して文字列の範囲内にあるかどうかを確認してください。文字列の特殊な場合は ですlength
。
文字列に格納されている名前のリストを分割しようとしていると思います。そのような場合、list() のような動的コンテナーを作成する方が簡単ですhttp://www.easywayserver.com/blog/java-list-example/
。
ここにちょっとした例があります。これらの目的のために、私は while ループを好みます。少なくとも実行時にデータを解釈せずにリストの長さを知っている場合、forループは良い選択ですが、これには適していません:
String names = "Foo Bar";
List<String> seperatedNames = new List<String>();
String name = "";
int i = 0;
while (i < names.length()) {
if (names.charAt(i) == ' ') { // you can check for upper case char too
seperatedNames.add(name); // add name to list
name = ""; // clear name-buffer
i++; // increment i, else it would produce an infinite loop
}
name += names.charAt(i++); // add current char to name-buffer and increment current char
}
少しでもお役に立てれば幸いです。