在我的程序中的另一个.java文件中引用类
我对Java完全陌生,在引用另一个.Java文件中声明的类时遇到困难。我在甲骨文网站上读了很多关于它的文章,还有很多关于stackoverflow的问题,但都没能解决这个问题。以下是我采取的步骤: 设置类路径。 我在UNIX上运行这个。所以我打了进去在我的程序中的另一个.java文件中引用类,java,Java,我对Java完全陌生,在引用另一个.Java文件中声明的类时遇到困难。我在甲骨文网站上读了很多关于它的文章,还有很多关于stackoverflow的问题,但都没能解决这个问题。以下是我采取的步骤: 设置类路径。 我在UNIX上运行这个。所以我打了进去 %java-classpath/users/myUserName/algs4/assignment1。它没有改变类路径,而是给了我一长串其他选项 在我的每个.java文件中包含“包名”,这些文件都有我想要引用的类定义 我还确保要引用的所有文件都位于
%java-classpath/users/myUserName/algs4/assignment1
。它没有改变类路径,而是给了我一长串其他选项
在我的每个.java文件中包含“包名”,这些文件都有我想要引用的类定义
我还确保要引用的所有文件都位于同一目录中。
以下是我的一些代码:
package assignment1;
public class Percolation
{
private int[][] grid;
....
//Other method definitions etc.
public Percolation(int N)
{
uf = new WeightedQuickUnionUF(N);
grid = new int[N][N];
...
//Other code
}
}
我的WeightedQuickUnionUF类也定义为:
package assignment1;
public class WeightedQuickUnionUF {
private int[] id; // id[i] = parent of i
private int[] sz; // sz[i] = number of objects in subtree rooted at i
private int count; // number of components
//Create an empty union find data structure with N isolated sets.
public WeightedQuickUnionUF(int N) {
count = N;
id = new int[N];
sz = new int[N];
for (int i = 0; i < N; i++) {
id[i] = i;
sz[i] = 1;
}
}
}
我知道这是因为编译器不知道什么是类WeightedQuickUnionUF。它不能引用它。那我该怎么做呢?我已经尝试过流行的解决方案
我没有使用任何IDE。只需要一个文本编辑器,然后在终端上编译它
(algs4文件夹包含stdlib.jar等文件)
编辑:我错过了“新”关键字。我已经补充了这一点。另外,我正在Percolation之前编译我的WeightedQuickUnionUF类。javajava命令不是设置类路径,而是尝试运行java类。这就是为什么选择列表很长 您可以在编译时指定类路径:run
javac-classpath。algs4目录中的assignment1/Percolation.java
。注意点,它表示当前目录
不需要按顺序编译文件
要运行您的程序:
java-cp。assignment1.Percolation
来自algs4目录。您需要首先编译依赖项,即在您的例子中是WeightedQuickUnionUF
类
如果需要匿名对象,请将其与new
关键字一起声明:
uf = new WeightedQuickUnionUF(N);
或者像另一个答案中提到的那样使用它
由于该答案已被删除(我再也看不到了),另一种方法是使用命名对象:
WeightedQuickUnionUF myObj;
您必须在
order of the flow of the Object Graph.
这意味着在编译加权的QuickUnionUF之前,不能编译渗流类。
因此,首先编译加权的QuickUnionuf,然后再进行过滤
我想你甚至在初始化WeightedQuickUnionUF(N)时漏掉了new
关键字
我首先编译了WeightedQuickUnionUF类。我还添加了新的关键字,但消息是一样的。java:6:找不到符号symbol:class WeightedQuickUnionUFI首先编译了WeightedQuickUnionUF类。(没有错误)。我还添加了新的关键字,但同样的问题。在我的机器上测试,它编译和运行成功。谢谢!还有一个问题,为什么我要从algs4目录编译,而不是从赋值1编译?您应该从algs编译:就像上面的答案一样
myObj = new WeightedQuickUnionUF(N);
uf = myObj;
order of the flow of the Object Graph.
uf = new WeightedQuickUnionUF(N);