[英]Create a 2d array from an ArrayList<Integer>
我有一個ArrayList,我想創建一個將其轉換為2d數組int [] []的方法。 這個新的2d數組將表示一個矩陣,並且必須為正方形,因此,例如,如果我使用[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;}
您的實現幾乎可以,除了一些一次性錯誤:
integers.get
調用之后而不是之前增加cont
。 如果之前增加,則列表的第一個元素將被跳過。 一種簡單的解決方法是在內部循環內移動增量,並將其與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
, j
和m
計算正確的位置:
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
ret[i][j] = integers.get(i * m + j);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.