传递和修改全局数组

时间:2014-03-13 18:44:29

标签: java arrays

注意

这是在检查StackOverflow之前未彻底调试代码的示例。代码中其他地方的错误就是抛弃了这一部分。没有什么真正的"错误"这里有这些东西......所以,请随意使用它作为一个例子。无需进一步的答案:)谢谢!

这里有一些代码:

public static int[] code = new int[95];

//main method, array is populated with other methods, etc...

checkOrientation(code);

public static void checkOrientation(int[]code) {
        if (code[4] != 0) {
            System.out.println("Upside down!");
            for (int i = 4; i < code.length-6; ++i) {
                if (code[i] == 1) {
                    code[i] = 0;
                } else {
                    code[i] = 1;
                }
            }
        }
    }

我想知道如何传递该全局数组并对其进行修改。因此,目标是代码可重用性,我可以将任何数组传递给此方法并使其工作。

也许我需要让它返回一个数组并将其分配给一个新数组?我不想制作更多阵列,我的代码已经因各种突变的阵列副本而变得有点臃肿。

另外:暂时远离ArrayLists,所以我不打算使用它们。

任何建议都将受到赞赏:)

澄清:
这段代码正在做的是翻转位......所以如果数组元素[5]是1,它会将数组元素[5]更改为0,反之亦然。所以,我希望将它保留在同一个数组中,因为它不会改变大小,我不再需要原始数组。

2 个答案:

答案 0 :(得分:1)

void run()
{       
    int[] arr = {1, 2, 3, 4, 5};
    twiddle(arr);
    for (int i : arr)
    {
        System.out.println(i);
    }
}

static void twiddle(int[] toBeTwiddled)
{
    toBeTwiddled[2] = 10;
}

调用run()打印:

1
2
10
4
5

您是否尝试过代码?它看起来应该完全符合您的要求。

答案 1 :(得分:1)

您在这里做的是使用具有相同名称的函数参数遮蔽您的全局变量code。在您的函数中,code将引用传递的参数,而不是全局变量。由于变量具有全局范围,因此您无需将其作为参数传递给函数。