Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将数据加载到二维数组中_Java_Multidimensional Array - Fatal编程技术网

Java 无法将数据加载到二维数组中

Java 无法将数据加载到二维数组中,java,multidimensional-array,Java,Multidimensional Array,我正在尝试将数据加载到二维数组中。 我的代码是 import java.util.Arrays; public class MyClass { public static void main(String args[]) { String[] datas=null; datas = new String[4]; datas[0] = "abc,def,ghi"; datas[1] = "1,2,3";

我正在尝试将数据加载到二维数组中。 我的代码是

import java.util.Arrays;

public class MyClass {
    public static void main(String args[])
    {
        String[] datas=null;

        datas = new String[4];

        datas[0] = "abc,def,ghi";
        datas[1] = "1,2,3";
        datas[2] = "abc,def,ghi";
        datas[3] = "1,2,3";

        int cols = datas.length;
        int rows = datas[1].split(",").length;
        System.out.println("rows="+rows+" and cols="+cols);


        String[][] table_data= new String[cols][rows];
        for(int i=0;i<cols;i++)
        {
            System.out.println("came for " + i);
            table_data[cols] = datas[i].split(",");
        }

        System.out.println("Table Datas = " + Arrays.deepToString(table_data));

    }
}
我试着把声明改成

String[][] table_data= new String[cols+1][rows+1];
它将输出显示为

rows=3 and cols=4
came for 0
came for 1
came for 2
came for 3
Table Datas = [[null, null, null, null], [null, null, null, null], [null, null, null, null], [null, null, null, null], [1, 2, 3]]

但这不是我想要的结果。任何帮助都会非常充分

在我看来,您必须使用
表[i]
更改
表数据[row]

for(int i=0;i<cols;i++){
     System.out.println("came for " + i);
     table_data[i] = datas[i].split(",");
}
for(inti=0;itry

因为您将数组设置为4列:

String[][] table_data= new String[cols][rows];
其中
cols=4
,然后尝试编辑索引4,它实际上是第5个元素(0、1、2、3、4),并且不存在:

table_data[cols] = datas[i].split(",");
但由于该赋值发生在循环中,没有进一步的代码:

for(int i=0;i<cols;i++)
{
    System.out.println("came for " + i);
    table_data[cols] = datas[i].split(",");
}

for(int i=0;i您总是写入数组的最后一个元素。您应该使用
table\u data[i]
而不是
table\u data[cols]

table\u data[cols]
将超出范围,因为索引从0到cols-1(并且当您增加
table\u data的大小时,您总是写入相同的索引)。我猜你的意思是
表\u数据[I]
。顺便说一句,查看stacktrace(例如MyClass.java第24行),如果需要,使用调试器应该会显示速度相当快。
table_data[cols] = datas[i].split(",");
for(int i=0;i<cols;i++)
{
    System.out.println("came for " + i);
    table_data[cols] = datas[i].split(",");
}
for(int i=0;i<cols;i++)
{
    System.out.println("came for " + i);
    table_data[i] = datas[i].split(",");
}