在函数内使用参数变量

时间:2014-03-05 07:26:09

标签: function variables parameters

我一直在为数组内部的复制编写一个java代码。 这是代码:

private int[] id;
public void union(int p, int q)
{
    int pid = id[p];
    int qid = id[q];
    for(int i=0; i<id.length; i++)
        if(id[i]==pid)id[i]=qid;
}

但是我的导游说如果我使用id[i]==id[p]代替id[i]==pid它会给我一个错误。并继续称它为“阴险的虫子”。但我没有看到它的问题。它应该给出与我调用该函数时相同的结果,它应该将我提到的值作为参数,并且应该没有问题。

有人对此有所了解吗?

2 个答案:

答案 0 :(得分:0)

如果pq超出范围,我在代码中看到的问题是什么?你会得到一个超出范围的数组异常。您应首先检查p和q是否在数组的长度内。

在尝试使用p和q访问数组之前,您应该尝试先检查它们。

if(p >= 0 && p < id.length)

if(q >= 0 && q < id.length)

答案 1 :(得分:0)

在用户端不会看到一个阴险的错误,但它会继续从内部引起问题。在您的代码中,当您的迭代达到i = p时,它会更新id [p]的值,并且在下一次迭代时,if条件将检查id [p]的错误值。你无法发现错误,使其变得阴险。