0

この部分文字列関数に不満を感じています。ここで、私の部分文字列関数は、初めてだけ値を与えてくれます。arraylistの最初の3文字に格納されています。2回目は他の3文字を取ることができず、arralistに""値が格納されています。

私のコードは以下の通りです:

 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));

            }
        }

このコードを手伝ってください。私がどうかしましたか、まずいことでもありましたか?

ありがとう、

4

4 に答える 4

0

あなたはおそらくそれを仮定していmStrmystr、同じです。mStr両方の場所で使うつもりでしたか?(elseブロックとifブロックの両方で)

編集(これで修正されました):

mStr.substring(i,i+3)の代わりに使用する必要がありmStr.substring(i,3)ます。サブストリングは開始インデックスと終了インデックスを取りますが、開始インデックスと長さをとると想定しています。

于 2013-02-05T06:53:42.180 に答える
0
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));
        }
   }
于 2013-02-05T07:03:04.057 に答える
0

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));

       }
  }
于 2013-02-05T07:03:21.427 に答える
0

mLst.add(String.valueOf(mStr.substring(i、3)));で例外が発生している必要があります。

i = 6の場合、substring(6,3)から何が得られるからです。したがって、2番目のパラメータは可変である必要があります

于 2013-02-05T07:10:01.763 に答える