繁体   English   中英

错误java.lang.ArrayIndexOutOfBoundsException:

[英]Error 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)

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

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

you need to put "-" in between string.

您在错误的位置添加- 给你值(我假设cardNames的初始值为004

"004034556-"

你应该做:

cardNames += "-" +cards;

这会给你:

"004-34556"

但是,认真地考虑一下将String组合并以相同方式再次split的目的是什么?

如果你只是这样就难吗?

String part1 = cardNames; 
String part2 = cards;

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

我认为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];
}

当没有“-”的东西传递给您的方法时,例如“ foo”,当您调用“ foo-”。split()时,它变成“ foo-”,它返回[“ foo”],因此,如果您尝试访问索引1,它将越界。

您打印“卡片”了吗?

我认为cardNames是“ somethig-”; 然后零件= {'某物'}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM