StringIndexOutOfBoundException与子字符串函数Android



我对这个子字符串函数感到沮丧。这里我的子字符串函数只给我第一次值。它已存储在arraylist中的前3个字符。第二次它不能接受其他3个字符,并且它已经在arraylist中存储了"值。

我的代码如下:

 String mStr= "jklpourtujolkjth";
     ArrayList<String> mLst = new ArrayList<String>();
       for (int i = 0; i < mStr.length(); i+=3)
        {
            if ((i + 3) < mStr.length())
            {
                mLst.add(mStr.substring(i,3));
            }
            else{
                mLst.add(mStr.substring(i));
            }
        }

帮我处理这个代码。我怎么了?

谢谢,

您可能假设mStrmystr是相同的。你的意思是在这两个地方都用mStr吗?(在else块和if块中)

编辑(现在已经修复):

您应该使用mStr.substring(i,i+3)而不是mStr.substring(i,3)。子字符串有一个起始索引和结束索引,但您假设它有一个开始索引和长度。

String mStr= "jklpourtujolkjth";
 ArrayList<String> mLst = new ArrayList<String>();
   for (int i = 0; i < mStr.length(); i+=3)
   {
        int to=i+3;
        if (to < mStr.length())
        {
            mLst.add(String.valueOf(mStr.substring(i,to)));
        }
        else
        {
            mLst.add(mStr.substring(i));
        }
   }

您忘记在子字符串方法中给定endIndex。这就是为什么你正在跳出性观念的底线。把你的代码改成这样。。。

这里的问题是在循环中获取子字符串,这是它第一次调用

 mStr.substring(0,3)) which gives the string as jkl

下一次呼叫

 mStr.substring(3,3)) which will give outofboundsexception

要了解更多关于子字符串的信息,请从这里阅读文档

String mStr= "jklpourtujolkjth";
ArrayList<String> mLst = new ArrayList<String>();
  for (int i = 0; i < mStr.length(); i+=3)
  {
       if ((i + 3) < mStr.length())
       {
           mLst.add(String.valueOf(mStr.substring(i,i+3)));// here is the change
       }
       else{
           mLst.add(mStr.substring(i));
       }
  }

您必须在mLst.add(String.valueOf(mStr.substring(i,3)));

因为当i=6时,你将从子串(6,3)中得到什么。所以第二个参数应该是变量

最新更新