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(",");
}