簡體   English   中英

用Java擴展2d數組/矩陣的大小

[英]Expanding size of 2d Array/ Matrix in Java

我在Java的2D數組中存儲了2x2矩陣

int pixels [][] = new int[2][2];

它以這種方式存儲以下數據

{0 2}
{0 2}

我正在尋找一種方法將該矩陣擴展為例如8x8矩陣,因此結果將是這樣的:

{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}
{0  0  0  0  2  2  2  2}

知道如何使用Java做到這一點嗎?

到目前為止,這是我嘗試過的:

int amountToExpand = finalImage.length/2;
     for(int i = 0; i<finalImage.length; i++){
         for(int j = 0; j<finalImage.length; j++){
             if(i < amountToExpand+1){
                 finalImage[i][j]=pixels[][];
             }
         }
     }

關鍵的見解是最終圖像中的單元格(i,j)包含前一圖像中單元格的值(i / amountToExpand,j / amountToExpand)。

如果比率totalToExpand為整數,則此代碼將運行良好。

int amountToExpand = finalImage.length / pixels.length;
        for (int i = 0; i < finalImage.length; i++) {
            for (int j = 0; j < finalImage[i].length; j++) {
                finalImage[i][j] = pixels[i / amountToExpand][j / amountToExpand];
            }
        }

在這里,您可以... expandArray用於擴展,outputArray用於顯示數組的結果以供參考。

public class Test {
    public static void main(String[] args) {
        try {
            int[][] pixels1 = new int[2][2];
            pixels1[0][0] = 1;
            pixels1[0][1] = 2;
            pixels1[1][0] = 3;
            pixels1[1][1] = 4;

            int[][] pixels2 = expandArray(pixels1, 4);

            outputArray(pixels1);
            outputArray(pixels2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static int[][] expandArray(int[][] arr, int factor) {
        int[][] output = new int[arr.length * factor][arr[0].length * factor];
        for (int i = 0; i < output.length; i++) {
            for (int j = 0; j < output[i].length; j++) {
                int orgRow = i / ((arr.length - 1) * factor);
                int orgCol = j / ((arr[0].length - 1) * factor);
                output[i][j] = arr[orgRow][orgCol];
            }
        }

        return output;
    }

    private static void outputArray(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }

            System.out.println();
        }
    }
}

暫無
暫無

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

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