簡體   English   中英

在JAVA中將1d數組轉換為2d數組

[英]Convert 1d array to 2d array in JAVA

我試圖在Java中將1d數組中的值輸入2d數組中。

這是我到目前為止的內容:

int[] input2 = {
    0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0
};
int[][] arr = new arr[3][4];

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.println("index" + ((i * arr.length) + j));
        arr[i][j] = input2[(i * arr.length) + j];
        //System.out.print("  " + arr[i][j]);

    }
    //System.out.println();
 }

但是它輸出的是:

index0
index1
index2
index3
index3
index4
index5
index6
index6
index7
index8
index9

這意味着我從一維數組中弄錯了索引。 我哪里做錯了 ?

您的錯誤是,在每一步中,您乘以數而不是列數

如果要轉到第二行的第一個元素,則必須先跳過第一行的所有元素。 那將是1 * arr[0].length 因此,您的方法可能適用於X by X數組,但不適用於X by Y數組。

它很可能是二維填充的,但是(((i * arr.length)+ j)可能只是在添加值。 我將在其中間添加“ +”,“”以查看實際獲得的輸出。

在您的循環中嘗試-

((i*arr[0].length) + j) 

您應該將索引公式從更改為:

(i*arr.length) + j

(i*arr[i].length) + j

您可以嘗試以下方法:

    int count = 0;
    for(int i=0; i< arr.length; i++)
     {
         for(int j=0; j<arr[i].length; j++)
         {
             //System.out.println("index" + ((i*arr.length) + j) );
             arr[i][j] = input2[count++];
             System.out.print("  " + arr[i][j]);

         }
    System.out.println();
     }

嘗試

int[] input2 = {0,1,0,0,0,1,1,0,1,0,1,0};
 int[][] arr = new arr[3][4];

for(int i=0; i< arr.length; i++)
         {
             for(int j=0; j<arr[i].length; j++)
             {
                 System.out.println("index" + ((i*arr[i].length) + j) );
                 arr[i][j] = input2[(i*(arr[i].length)) + j];
                 //System.out.print("  " + arr[i][j]);

             }
        //System.out.println();
         }

(用((i*arr[i].length) + j)替換了((i*arr.length) + j) ((i*arr[i].length) + j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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