簡體   English   中英

從ArrayList創建二維數組<Integer>

[英]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 ,而是使用ijm計算正確的位置:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM