Java 如何用一维数组填充二维数组列表?

Java 如何用一维数组填充二维数组列表?,java,arrays,Java,Arrays,我有一个问题,每当我尝试用一维填充二维arrayList(5x5)时,都会出现索引越界异常。我猜这是因为正方形数组还没有索引0值,但我不知道如何修复它 ArrayList<Character> c = new ArrayList<>(); // Copy character by character into arraylist for (int i = 0; i < finalArray.length(); i++) { c.add(

我有一个问题,每当我尝试用一维填充二维arrayList(5x5)时,都会出现索引越界异常。我猜这是因为正方形数组还没有索引0值,但我不知道如何修复它

ArrayList<Character> c = new ArrayList<>();
        
// Copy character by character into arraylist 
for (int i = 0; i < finalArray.length(); i++) { 
    c.add(i, finalArray.charAt(i));
} 

ArrayList<ArrayList<Character>> square = new ArrayList<>();
//square.add(new ArrayList<>()); 

int k = 0;
for(int i = 0; i < 4; i++){
    for(int j = 0; j < 4; j++){
        square.get(j).add(i, c.get(k));
        k++;
    }
}
ArrayList c=new ArrayList();
//将字符逐个复制到arraylist中
对于(inti=0;i
将“行”列表添加到内部循环之前的外部列表中。您还使用了错误的
square
索引

int k = 0;
for(int i = 0; i < 4; i++){
    square.add(new ArrayList<>()); // Initialize the row
    for(int j = 0; j < 4; j++){
        square.get(i).add(c.get(k++)); // get(i) not get(j)!
    }
}
intk=0;
对于(int i=0;i<4;i++){
square.add(newarraylist());//初始化行
对于(int j=0;j<4;j++){
square.get(i).add(c.get(k++);//get(i)not get(j)!
}
}
请注意其他简化

这样做会更清楚:

int k = 0;
for(int i = 0; i < 4; i++){
    List<Character> row = new ArrayList<>();
    square.add(row);
    for(int j = 0; j < 4; j++){
        row.add(c.get(k++));
    }
}
intk=0;
对于(int i=0;i<4;i++){
列表行=新的ArrayList();
正方形。添加(行);
对于(int j=0;j<4;j++){
add(c.get(k++));
}
}

Well使用get()是访问我在网上找到的第一行元素的唯一方法。正如我所说的,我知道它不能得到它,这就是为什么我决定问这个问题:)请有人帮我找到解决方案。非常感谢你的帮助!它现在工作得很好。顺便说一句,我应该在for循环中输入5而不是4,因为它是5x5数组。@RadioActiven-我不知道“2D数组”是指“数组列表中的数组列表”。如果我想要一个5x5阵列。。。我可能会声明一个5x5数组;)然而,在C#中,数组和列表都是基于0的。意思是“4”是“正确的”。