【发布时间】:2017-11-19 22:35:59
【问题描述】:
我正在尝试构建一个函数,当给定一个字符串和一个起点时,它将返回分隔符 (', ') 之前的任何数字。所以如果它被交给("45,621,9", 0),它会返回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),当它应该返回 9 然后停止循环时,我会得到那个异常。
【问题讨论】:
-
你的循环条件真的没有意义:
for (int i = startFrom; i < delim; i++)。i不意味着成为字符串的索引。为什么要将它与要查找的分隔符的 Unicode 值进行比较?为什么你实际上不在循环体内使用i的值?目前这是一个看起来很奇怪的循环。我怀疑您真的应该使用子字符串而不是字符串连接,并且您的循环应该使用for (int i = startFrom; i < data.length(); i++)作为初学者。 -
请添加语言名称标签
标签: java string exception processing charat