错误java.lang.ArrayIndexOutOfBoundsException:

时间:2014-03-28 06:05:49

标签: java android

我将字符串值传递给此方法。但是我得到Array索引绑定异常请帮帮我。

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)

5 个答案:

答案 0 :(得分:3)

您在字符串的末尾附加"-",因此当您拆分时,您只能获得一个值。

因此这个String part2 = parts[1];抛出数组索引超出绑定异常。

you need to put "-" in between string.

答案 1 :(得分:1)

您将-添加到错误的位置。给你的价值为(我假设cardNames的初始值是004

"004034556-"

你应该这样做:

cardNames += "-" +cards;

哪个会给你:

"004-34556"

但严重的是,以同样的方式再次合并Stringsplit的目的是什么?

如果你这样做会不容易?

String part1 = cardNames; 
String part2 = cards;

注意:您应始终检查您要访问的index元素必须更少 parts.length

答案 2 :(得分:1)

我认为您的 cardNames 值中只有一个“ - ”,这就是您收到错误的原因..

最好使用For循环从Array获取所有数据

    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];
}

答案 3 :(得分:0)

当没有&#34; - &#34;传递到你的方法, 喜欢&#34; foo&#34; 它成了&#34; foo - &#34; 当你打电话给#34; foo - &#34; .split() 它会返回[&#34; foo&#34;] 因此,如果你试图访问索引1,它就会超出范围。

答案 4 :(得分:-1)

你有打印&#34;卡&#34;?

我认为cardNames是&#34; somethig - &#34 ;; 那么parts = {&#39; something&#39;}

因此,部分[1]超出索引范围。