繁体   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