我是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) { /* ... */ }
请告知如何从导入的包中访问该功能。 提前谢谢!
答案 0 :(得分:2)
您已在构造函数中创建了局部变量uf
,并尝试从方法isFull()
访问它。
你可以:
uf
中创建对象isFull()
并使用它uf
成为您班级的成员并使用它。 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()方法访问它了!