Java StringIndexOutOfBoundsException-处理
我试图构建一个函数,当给定一个字符串和一个起点时,它将返回分隔符Java StringIndexOutOfBoundsException-处理,java,string,exception,processing,charat,Java,String,Exception,Processing,Charat,我试图构建一个函数,当给定一个字符串和一个起点时,它将返回分隔符(',')前面的任何数字。因此,如果它被递给(“45621,9”,0),它将返回45 这就是我所拥有的,它非常有效,直到你点击字符串的末尾,然后它抛出一个StringIndexOutOfBoundsException,其中字符串索引超出范围:8 因此,如果我尝试使用(“45621,9,7),我会得到那个错误。如何处理字符串结尾并停止循环?我曾想过使用null检查,但由于char是原始的,所以我不能 final char delim
(',')
前面的任何数字。因此,如果它被递给(“45621,9”,0)
,它将返回45
这就是我所拥有的,它非常有效,直到你点击字符串的末尾,然后它抛出一个StringIndexOutOfBoundsException
,其中字符串索引超出范围:8
因此,如果我尝试使用(“45621,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);
}
final char delim=',';
字符数据存储;
int nextItem(字符串数据,int startFrom){
字符串dataValue=“”;
for(int i=startFrom;i
现在如果我调用
nextItem(“45621,9”,7)
我会在它返回9
然后停止循环时得到异常。请参阅Jon Skeet的评论。您的for循环不正确。按如下所示进行更正,然后重试:-
for (int i = startFrom; i < data.length(); i++){
dataStorage = data.charAt(i);
if(dataStorage != delim){
dataValue = dataValue + dataStorage;
i++;
}
for(int i=startFrom;i
您的循环条件真的没有意义:for(int i=startFrom;i
。i
不是指作为字符串的索引。为什么要将其与要查找的分隔符的Unicode值进行比较?为什么不在循环体中实际使用i
的值?目前,这是一个非常奇怪的循环。我怀疑您真的应该使用substring而不是st环连接,并且循环应该使用for(int i=startFrom;i
作为初学者。请使用语言名称添加标记请使用java标记正确标记。