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标记正确标记。