首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java找不到符号StdIn和StdOut

Java找不到符号StdIn和StdOut
EN

Stack Overflow用户
提问于 2019-05-10 04:43:32
回答 4查看 1.5K关注 0票数 0

我有Java编译问题。虽然我已经正确配置了我的类路径,如图所示.

代码语言:javascript
复制
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文件中找到,所以我不知道为什么会发生这种情况。有人知道这是为什么吗?我找了好几个小时却一无所获。

代码语言:javascript
复制
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

这是我的代码,你可以看到

代码语言:javascript
复制
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人来说,我不认为这是一个困难的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-05-11 18:32:37

您可以像1999年那样工作,并将JAR文件手动添加到类路径中,或者您可以识别它是2019年,并使用Maven或Gradle这样的构建工具来帮助您。algs4 JAR可在BinTray上使用。https://github.com/kevin-wayne/algs4/blob/master/README.md

我上过这门课,用Gradle来构建代码。一旦您设置了项目,您就可以专注于解决真正的问题,而不是操作类路径。我还发起了一项计划,以更好地组织algs4的源代码(由于历史原因,目前只有一个平面结构),但没有时间完成它。

票数 2
EN

Stack Overflow用户

发布于 2019-05-10 09:29:45

javac-introcs命令用于编写“计算机科学入门:跨学科方法”一书。命令javac-algs4 4适用于图书算法,4e。前者使用默认包,因此不需要import语句;后者使用的是命名包和import语句。因此,在您的例子中,使用javac-introcs,一切都会正常工作。

在使用这两个命令时,不需要设置CLASSPATH环境变量。

票数 1
EN

Stack Overflow用户

发布于 2019-05-10 09:39:25

这是通过

# this must match the install directory LIFT_LIB="/usr/local/lift/lib"

export CLASSPATH="${CLASSPATH}:${LIFT_LIB}/stdlib.jar:${LIFT_LIB}/introcs.jar:${LIFT_LIB}/algs4.jar"在我的.bashrc文件中。它不能工作的原因是因为我没有在.bashrc中使用.bashrc命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56070802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档