2013-02-05 29 views
0

我對這個子字符串函數感到沮喪。在這裏,我的子字符串函數只給我第一次。它已被存儲在數組列表中的前3個字符。第二次它不能夠接受其他3個角色,並且它已經被存放在神職人員身上。StringIndexOutOfBoundException與子字符串函數Android

我的代碼如下:

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

      } 
     } 

幫助我的代碼。我怎麼了?

感謝,

+0

你在哪裏以及如何定義mystr? –

+0

@Arash對不起,兄弟我編輯過.. – Jai

回答

0

你可能被假設mStrmystr是相同的。你的意思是在兩個地方使用mStr? (無論是在else塊,並在if塊)

編輯(現在這是固定不變的):

您應該使用mStr.substring(i,i+3),而不是mStr.substring(i,3)。 Substring需要一個起始索引和結束索引,但是你假設它需要一個起始索引和長度。

+1

對不起,這是我的問題。我編輯過。再次檢查! – Jai

+0

Ameen的回答是正確的 –

+0

@Ameen:有時候一件小事可能會打擾一下心靈:) – Jai

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

你忘了在子串方法中給endIndex。這就是爲什麼你越來越失敗。改變你的代碼,這樣的... ...

這裏的問題是用於獲取子在循環中,第一次呼籲

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

下一個電話

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

要知道更多關於子閱讀文檔here

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

     } 
    } 
0

你必須得到外在在 mLst.add(String.valueOf(mStr.substring(i,3)));

因爲當我= 6那麼你會從子串(6,3)得到什麼。 所以第二個參數應該是可變的