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