[英]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.