【问题标题】:Storing one dimensional array to two dimensional将一维数组存储到二维
【发布时间】:2015-03-15 15:09:43
【问题描述】:

我正在尝试将 ArrayList 拆分并存储在二维数组中。 我可以用“:”字符分割每个 ArrayList 项目。稍后我可以将 split 函数返回的结果存储在一维数组中。

我的ArrayList内容如下: a:b:c:d:e
p:q:r:s:t:u:v
m:n:o

现在,我想将结果存储在二维数组中。 我遵循以下方法:

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

但是,我得到了 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)

有人可以分享一下怎么做吗?

【问题讨论】:

    标签: java arrays multidimensional-array arraylist


    【解决方案1】:

    数组初始化不正确。应该以new String[abc.size()][] 开头,而不是{}。此外,您必须将嵌套数组初始化为new String[a.length]。完整代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2011-01-10
      • 2019-07-23
      相关资源
      最近更新 更多