2014-03-28 47 views
0

我將字符串值傳遞給此方法。但是即時獲取數組索引綁定異常請幫助我。錯誤java.lang.ArrayIndexOutOfBoundsException:

public void separateCards(String cards) 
{ 
    cardNames+=cards+"-"; 
    String[] parts = cardNames.split("-"); 
    String part1 = parts[0]; // 004 
    String part2 = parts[1]; // 034556 
    Toast.makeText(getActivity(), part1,Toast.LENGTH_SHORT).show(); 
} 
} 

我logcat的

03-28 11:27:41.213: E/AndroidRuntime(22392): FATAL EXCEPTION: main 
    03-28 11:27:41.213: E/AndroidRuntime(22392): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at com.compareCr.ListvCompare.separateCards(ListvCompare.java:760) 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at com.compareCr.ListvCompare$2$1.onClick(ListvCompare.java:627) 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at android.view.View.performClick(View.java:4261) 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at android.view.View$PerformClick.run(View.java:17356) 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at android.os.Handler.handleCallback(Handler.java:615) 
    03-28 11:27:41.213: E/AndroidRuntime(22392): at android.os.Handler.dispatchMessage(Handler.java:92) 
+1

什麼是你試圖拆分的字符串'-' –

+0

'cardNames = 004'和'cards = 034556'? – Apoorv

+0

@Apoorv它的cardName就像GoldeCard-platinumcard那樣 –

回答

3

你在字符串末尾添加"-",因此當你分割,你只有一個值。

因此這個String part2 = parts[1];拋出數組索引超出界限的異常。

you need to put "-" in between string. 
+1

我授予你使用我評論中的代碼的權限:'cardNames + =「 - 」+ cards;':-) – Astrobleme

+0

謝謝,但我不認爲在這裏添加。因爲我猜問題男人已經明白是什麼問題.....:p –

1

您在錯誤的地方添加了0​​。給你的價值爲(我假設的cardNames初始值是004

"004034556-" 

你應該這樣做:

cardNames += "-" +cards; 

,這將給你:

"004-34556" 

但嚴重的是什麼將Stringsplit再次以相同的方式組合起來的目的?

如果你這樣做不是很容易嗎?

String part1 = cardNames; 
String part2 = cards; 

注:您應經常檢查您要訪問必須parts.length

+0

小心解釋_how_會發生這種情況嗎? – Astrobleme

1

我認爲是index元素只單曲「-」你cardNames值,這就是爲什麼你得到錯誤..

所以更好地使用For循環從數組獲取所有數據

String[] parts = cardNames.split("-"); 
    for (int i = 0; i < parts.length; i++) { 
     String partsData = parts[i]; 
    } 

更新時間:

cardNames=cardNames+"-"+cards; 

String parts1; 
String parts2; 
String[] parts = cardNames.split("-"); 
for (int i = 0; i < parts.length; i++) { 
    if(i==0) 
     parts1= parts[i]; 
    else if(i==1) 
     parts2= parts[i]; 
} 
+0

我想劃分becouse我想保存在兩個strings.how我這樣做,請幫助我 –

+0

首先你合併兩個字符串後,然後你分開它,爲什麼這樣? –

0

當事情沒有 「 - 」 傳遞給你的方法, 像 「富」 之成爲 「foo-」 當u稱之爲 「foo-」 .split() 它返回[「foo」] 因此,如果你嘗試訪問索引1,它是無界的。

-1

你打印「卡」嗎?

我認爲cardNames是「somethig-」; then parts = {'something'}

因此,parts [1]不在索引中。

+0

請解釋。 – Irfan

相關問題