我可以从导入的包中为类创建对象

时间:2016-09-06 19:53:21

标签: java

我是java的初学者。

我在代码中导入了一个包,并希望使用导入类中的函数。它说物体无法解决。

代码如下

import edu.princeton.cs.algs4.WeightedQuickUnionUF;

public class Percolation {
  private int[] full;
  private int length;
  private int size;

  public Percolation(int n) {              
    length = n + 2;
    WeightedQuickUnionUF uf = new WeightedQuickUnionUF(length);

  }

  // Now if I use the uf object in another function as below

  public boolean isFull(int i, int j) {
    boolean result = false;
    if(uf.connected(0,i+j)) {
      result = true;
    }
    return result;
  }
}

//uf.connected in the public function declared in WeightedQuickUnionUF package.
//Its definition is as follows
public boolean connected(int p, int q) { /* ... */ }

它给了我一个错误

Error: uf cannot be resolved
uf.connected包中声明的公共函数中的

WeightedQuickUnionUF。 其定义如下

public boolean connected(int p, int q) { /* ... */ }

请告知如何从导入的包中访问该功能。 提前谢谢!

3 个答案:

答案 0 :(得分:2)

您已在构造函数中创建了局部变量uf,并尝试从方法isFull()访问它。

你可以:

  1. 在方法uf中创建对象isFull()并使用它
  2. uf成为您班级的成员并使用它。
  3. 使用构造函数中的uf调用方法。

答案 1 :(得分:1)

这是一个上下文问题:uf在Percolation的构造函数中声明,并且不是该类的属性。

答案 2 :(得分:1)

您在构造函数中创建了变量uf,这意味着其他函数将无法查看/使用它。

正如上面已经说过的那样,例如,您可以在isFull()函数中创建WeightedQuickUnionUF对象,或者,因为您需要长度并且您在构造函数中将其作为参数接收,所以执行以下操作:

//now uf is a local variable inside a Percolation object
private WeightedQuickUnionUF uf;

public Percolation(int n) {              
    length = n + 2;
    //now uf is created whenever you create a Percolation object
    uf = new WeightedQuickUnionUF(length);
}

现在你可以用isFull()方法访问它了!