当您尝试在数组、列表、字符串或范围超出其边界的任何内容中读取或写入时,会发生“超出范围”或“超出范围”。当您的字符串仅包含 7 个字符时,您无法读取索引 8 处的字符。这不是你的字符串的 RAM,它会导致 RAM 损坏,就像它有时在 C 数组中发生的那样。
当您设置数组和 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
}
我希望我能帮上一点忙。