gpt4 book ai didi

java - 从 ArrayList 创建二维数组

转载 作者:行者123 更新时间:2023-12-01 21:14:22 25 4
gpt4 key购买 nike

我有一个 ArrayList,我想创建一个方法将其转换为二维数组 int[][]。这个新的二维数组将表示一个矩阵,并且它必须是方形的,因此例如如果我使用 [8, 2, 3, 0],结果将是 {8,2} {3,0}

public static int[][] convertIntegers(ArrayList<Integer> integers){
int m = (int) Math.sqrt(integers.size());
int[][] ret = new int[m][m];

int cont = 0;

for(int i=0; i<m+1 ; i++)
{
for(int j=0; j<m; j++)
{
cont = cont + 1;
ret[i][j] = integers.get(cont);
;
}
}
return ret;}

最佳答案

你的实现几乎没问题,除了一些相差一的错误:

  • 您需要增加 cont integers.get之后打电话,没有之前。如果您之前递增,则将跳过列表的第一个元素。解决这个问题的一个简单方法是将增量移动到内部循环内,将其与 j 一起计数。 .
  • 外循环应该持续到 i < m而不是i < m + 1

修复错误后:

for (int i = 0, cont = 0; i < m; i++) {
for (int j = 0; j < m; j++, cont++) {
ret[i][j] = integers.get(cont);
}
}

顺便说一句,另一种方法是不使用 cont无论如何,使用i计算正确的位置, jm :

for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
ret[i][j] = integers.get(i * m + j);
}
}

关于java - 从 ArrayList<Integer> 创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com