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