Java 如何用一维数组填充二维数组列表?
我有一个问题,每当我尝试用一维填充二维arrayList(5x5)时,都会出现索引越界异常。我猜这是因为正方形数组还没有索引0值,但我不知道如何修复它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<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”是“正确的”。