java - Java 找不到符号 StdIn 和 StdOut
问题描述
我遇到了 Java 编译问题。虽然我已经正确配置了我的类路径,如此处所示......
yan@Y9Acer:~$ echo $CLASSPATH
.:/usr/local/lift/lib/stdlib.jar:/usr/local/lift/lib/introcs.jar:/usr/local/lift/lib/algs4.jar
构建时,我仍然收到以下 StdIn 和 StdOut 错误,指示未找到符号。但是这些可以在上面列出的 stdlib.jar 文件中找到,所以我不知道为什么会这样。有人知道为什么吗?我已经找了好几个小时了,但一无所获。
yan@Y9Acer:~$ javac-algs4 coursera/java-stuff/markov/Markov.java
coursera/java-stuff/markov/Markov.java:17: error: cannot find symbol
int n = StdIn.readInt(); // number of pages
^
symbol: variable StdIn
location: class Markov
coursera/java-stuff/markov/Markov.java:18: error: cannot find symbol
StdIn.readInt(); // ignore integer required by input format
^
symbol: variable StdIn
location: class Markov
coursera/java-stuff/markov/Markov.java:26: error: cannot find symbol
p[i][j] = StdIn.readDouble();
^
symbol: variable StdIn
location: class Markov
coursera/java-stuff/markov/Markov.java:47: error: cannot find symbol
StdOut.printf("%8.5f", rank[i]);
^
symbol: variable StdOut
location: class Markov
coursera/java-stuff/markov/Markov.java:49: error: cannot find symbol
StdOut.println();
^
symbol: variable StdOut
location: class Markov
coursera/java-stuff/markov/Markov.java:51: error: cannot find symbol
StdOut.println();
^
symbol: variable StdOut
location: class Markov
coursera/java-stuff/markov/Markov.java:54: error: cannot find symbol
StdOut.printf("%2d %5.3f\n", i, rank[i]);
^
symbol: variable StdOut
location: class Markov
7 errors
这是我的代码,所以你可以看到
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class Markov {
public static void main(String[] args) {
int trials = Integer.parseInt(args[0]); // number of iterations
int n = StdIn.readInt(); // number of pages
StdIn.readInt(); // ignore integer required by input format
// Read p[][] from StdIn.
double[][] p
= new double[n][n]; // p[i][j] = prob. surfer moves from page i to page j
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
p[i][j] = StdIn.readDouble();
// Use the power method to compute page ranks.
double[] rank = new double[n];
rank[0] = 1.0;
for (int t = 0; t < trials; t++) {
// Compute effect of next move on page ranks.
double[] newRank = new double[n];
for (int j = 0; j < n; j++) {
// New rank of page j is dot product of old ranks and column j of p[][].
for (int k = 0; k < n; k++)
newRank[j] += rank[k] * p[k][j];
}
// Update page ranks.
rank = newRank;
}
// print page ranks
for (int i = 0; i < n; i++) {
StdOut.printf("%8.5f", rank[i]);
}
StdOut.println();
StdOut.println();
// print page ranks
for (int i = 0; i < n; i++) {
StdOut.printf("%2d %5.3f\n", i, rank[i]);
}
}
}
任何人?对于有经验的 Java 人来说,我认为这不是一个困难的问题。
解决方案
您可以像 1999 年一样工作并手动将 JAR 文件添加到类路径,或者您可以识别它是 2019 年,并使用 Maven 或 Gradle 等构建工具为您完成此操作。JAR在algs4
BinTray 上可用。https://github.com/kevin-wayne/algs4/blob/master/README.md。
我参加了这门课程并使用 Gradle 来构建代码。设置项目后,您可以专注于解决实际问题,而不是操纵类路径。我还发起了一项旨在更好地组织源代码的计划algs4
(由于历史原因,目前是一个扁平结构),但没有时间完成它。
推荐阅读
- python - 如何使用浮点类型的数据(边界框)训练神经网络
- css - 如何更改 React 图标的线宽?
- android - 确认 tx 时 UPI 付款 href 链接导致错误
- javascript - Javascript无法访问对象属性
- javascript - 如果一个按钮被点击了 x 次,我需要在我的网站上发生一个事件
- javascript - AddEventListener 对新添加的 innerHtml 不起作用?
- c++ - 如何在 cout 语句中将数字转换为小数?
- android - 如何在 Android 片段中制作 SnackBar?
- python-3.x - RIDE 工具无法在 Ubuntu 20.4 上安装
- reactjs - Gatsby Source Contentful 4.x - 富文本 - 对 JSON 的更改