簡體   English   中英

全局Java數組設置值設置為0

[英]Global Java array setting values to 0

我有一個小問題。 我將稀疏矩陣中的每個元素放入一個名為“ b []”的一維數組中。 例如:

00070
00400
02000
00050
10000

成為: 0007000400020000005010000

以下代碼的工作方式是,在最內層循環b []中的給定點具有正確的值,如下所示。 我的問題是,最內層循環b []的值是:

b[] = 0000000000000000000000000

我無法理解我所缺少的。 還應注意,b []是全局定義的,並在此類的構造函數中實例化。 問題是我試圖在另一個函數中使用此1d數組,並且數組中的每個元素都設置為0。

public void return1dSequence() {

    // Create paired objects (Pair class).

    for (int i = 0; i < a.length; i++) {

        for(int j = 0; j < a[i].length; j++) {
            this.b[i] = a[i][j];

            // System.out.print(b[i]);
            if (this.b[i] == 0) {
                pos += 1;
            } else {
                value = this.b[i];
                ml.add(new Pair(pos, value));
                pos += 1;
            }
        }
    }
}

預先感謝您的任何答復,

安德烈

我要說的第一件事是,您不應該將變量(a,b ....)聲明為靜態。 創建兩個稀疏實例后,您可能會受到平均副作用的打擊。 嘗試將它們定義為非靜態的,並報告是否仍然無法正常工作。

最好的問候托馬斯

如果要以靜態方式訪問b [],請嘗試將其從每次對b []的調用中刪除。

另外,您確定您不會在代碼的其他任何地方覆蓋b []嗎? 這很可能是由於公共靜態聲明引起的問題。 嘗試將其設置為私有並刪除靜態文件,看看是否仍然存在問題。

您正在為外循環的索引i填充b[i] ...

每次在內循環中,您都用值a[i][j]覆蓋b[i] a[i][j]

a[i]數組的最后一個值始終為零。

這就是為什么您的b數組為零。

您想要的可能是:

int counter = 0;
for (int i = 0; i < a.length; i++) {
    for(int j = 0; j < a[i].length; j++) {
        b[counter] = a[i][j];
        counter++;
    }
}

暫無
暫無

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

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