简体   繁体   English

将一维数组存储到二维

[英]Storing one dimensional array to two dimensional

I am trying to split and store an ArrayList in a two dimensional array. 我正在尝试将ArrayList拆分并存储在二维数组中。 I am able to split every ArrayList item by ":" character. 我可以用“:”字符分割每个ArrayList项。 Later I am able to store the result returned by the split function in one dimensional array. 稍后,我能够将split函数返回的结果存储在一维数组中。

My ArrayList content is as follows: a:b:c:d:e 我的ArrayList内容如下:a:b:c:d:e
p:q:r:s:t:u:v 号码:问:R:S:T:U:v
m:n:o M:N:○

Now, I would like to store the result in two dimensional array. 现在,我想将结果存储在二维数组中。 I followed the following approach: 我遵循以下方法:

String a[]={};
String array[][] = {};

for(int i=0;i<abc.size();i++){
    a = abc.get(i).split(":");

    for(int j=0; j<a.length; j++){
        array[i][j] = a[j];
    }
}

But, I am getting ArrayIndexOutOfBounds exception. 但是,我收到ArrayIndexOutOfBounds异常。

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
        at com.exp.users.MainActivity.onCreate(MainActivity.java:54)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5146)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
        at dalvik.system.NativeStart.main(Native Method)

Could anyone please share how to do it? 有人可以分享如何做吗?

array is initialized incorrectly. 数组初始化不正确。 Should start out as new String[abc.size()][] , not {} . 应该以new String[abc.size()][] ,而不是{} new String[abc.size()][] Also, you must initialize nested arrays to new String[a.length] . 另外,您必须将嵌套数组初始化为new String[a.length] Full code: 完整代码:

List<String> abc = Arrays.asList("a:b:c:d:e", "p:q:r:s:t:u:v", "m:n:o");
String a[];
String array[][] = new String[abc.size()][];
for(int i=0;i<abc.size();i++){
    a = abc.get(i).split(":");
    array[i] = new String[a.length];
    for(int j=0; j<a.length; j++) array[i][j] = a[j];
}

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

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