StringIndexOutOfBoundsException - 处理中
StringIndexOutOfBoundsException - Processing
我正在尝试构建一个函数,当给定一个字符串和一个起点时,该函数将 return 定界符 (', ')
之前的任何数字。所以如果它被交给 ("45,621,9", 0)
它 returns 45
.
这就是我所拥有的,在您到达字符串末尾之前效果很好,然后它会抛出 StringIndexOutOfBoundsException
和 String index out of range: 8
。
因此,如果我尝试使用 ("45,621,9", 7)
,我会收到该错误。如何处理字符串结尾并停止循环?我想过使用 null
检查,但由于 char
是原始的我不能。
final char delim = ',';
char dataStorage;
int nextItem (String data, int startFrom) {
String dataValue = "";
for (int i = startFrom; i < delim; i++) {
dataStorage = data.charAt(startFrom);
if (dataStorage != delim) {
dataValue = dataValue + dataStorage;
startFrom ++;
}
}
startFrom++;
return Integer.parseInt(dataValue);
}
现在,如果我调用 nextItem("45,621,9", 7)
,我会在应该 return 9
时得到异常,然后停止循环。
请参阅 Jon Skeet 的评论。您的 for 循环不正确。像下面一样更正它并尝试:-
for (int i = startFrom; i < data.length(); i++){
dataStorage = data.charAt(i);
if(dataStorage != delim){
dataValue = dataValue + dataStorage;
i++;
}
我正在尝试构建一个函数,当给定一个字符串和一个起点时,该函数将 return 定界符 (', ')
之前的任何数字。所以如果它被交给 ("45,621,9", 0)
它 returns 45
.
这就是我所拥有的,在您到达字符串末尾之前效果很好,然后它会抛出 StringIndexOutOfBoundsException
和 String index out of range: 8
。
因此,如果我尝试使用 ("45,621,9", 7)
,我会收到该错误。如何处理字符串结尾并停止循环?我想过使用 null
检查,但由于 char
是原始的我不能。
final char delim = ',';
char dataStorage;
int nextItem (String data, int startFrom) {
String dataValue = "";
for (int i = startFrom; i < delim; i++) {
dataStorage = data.charAt(startFrom);
if (dataStorage != delim) {
dataValue = dataValue + dataStorage;
startFrom ++;
}
}
startFrom++;
return Integer.parseInt(dataValue);
}
现在,如果我调用 nextItem("45,621,9", 7)
,我会在应该 return 9
时得到异常,然后停止循环。
请参阅 Jon Skeet 的评论。您的 for 循环不正确。像下面一样更正它并尝试:-
for (int i = startFrom; i < data.length(); i++){
dataStorage = data.charAt(i);
if(dataStorage != delim){
dataValue = dataValue + dataStorage;
i++;
}