簡體   English   中英

無法在java中為數組賦值

[英]Trouble assigning a value to an array in java

我不知道,但由於某種原因陣列拒絕改變,我不知道為什么。 見下面的進一步評論

public static void contour (int[ ][ ][]image, int rows, int cols, int maxIntensity, int[ ][ ][]newImage) throws Exception
{
    PrintWriter contour = new PrintWriter("contour.ppm"); 
    int r = 0;
    int c = 0;
    int a = 0;
    int sumk = 0;

    while (r < rows && c < cols)
    {
        while (a < 3)
        {
            image[0][r][a] = newImage[0][r][a];
            image[cols-1][r][a] = newImage[cols-1][r][a];
            image[c][0][a] = newImage[c][0][a];
            image[c][rows-1][a] = newImage[c][rows-1][a];
            a++;
        }
        r++;
        c++;
    }   
    System.out.println (image[32][0][2]);
    System.out.println (newImage[32][0][2]);
}

這段代碼有點脫離了上下文,但你應該能夠看到我想在兩個數組中使用哪些值相同。 打印語句用於測試目的,由於某種原因,我得到兩個不同的值。 這些數組都賦值給它們,但圖像數組不會改變(即使我在這種方法中創建一個新數組,同樣的問題仍然存在)。

您可以看到我在main方法中定義了這些數組,它們如下所示:

int image [][][] = readimage (fname, descriptor);
int newImage [][][] = new int [rows][cols][3];

因此,圖像數組是來自不同方法的返回數組。

我忽略了一些非常明顯或者是什么? 我一直在努力解決這個問題,所以所有提示,技巧和解釋都非常感謝!!

假設你遍歷行和列的方式,你打算......你永遠不會重置a變量為0 ,那么你的代碼只能使用一次。

int r = 0;
int c = 0;
int a = 0;
int sumk = 0;

while (r < rows && c < cols)
{
    while (a < 3)
    {
        image[0][r][a] = newImage[0][r][a];
        image[cols-1][r][a] = newImage[cols-1][r][a];
        image[c][0][a] = newImage[c][0][a];
        image[c][rows-1][a] = newImage[c][rows-1][a];
        a++;
    }
    r++;
    c++;
    a=0; //<----ADD THIS
}  

如果rows參數或cols參數小於33,則測試中打印的位置將不會從newimage復制到image。 while (r < rows && c < cols)測試導致循環在r或c中的第一個達到其最大值時終止。

暫無
暫無

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

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