【问题标题】:How to import correct package for StdDraw?如何为 StdDraw 导入正确的包?
【发布时间】:2015-11-30 02:07:57
【问题描述】:

我想使用 StdDraw 包,我尝试了许多不同的导入方式。

我当然试过了:

import StdDraw;

但是,当我查看来自 Princeton here 的文档时,它显示 StdDraw 是 Objects 的一部分,所以我试试这个:

import java.lang.Object.StdDraw;

但是,这会导致错误:

error: cannot find symbol in
import java.lang.Object.StdDraw;

我看到了这个问题here,但它也没有回答这个问题。

如何导入StdDraw?谢谢。

【问题讨论】:

  • 仅供参考,文档意味着 StdDraw 扩展了 Object。也就是说,它是一种特殊的对象。 Java 中的所有类都隐式扩展了 Object!如果您有兴趣,请在此处了解更多信息 (stackoverflow.com/questions/19114997/…)。

标签: java class import stddraw


【解决方案1】:

如果你想使用 StdDraw 你必须有

  • 任一来源
  • 或类(最好压缩为 jar)

作为您使用源的首选方式(请参阅http://introcs.cs.princeton.edu/java/15inout/)。它说“要使用这些库,请将 StdIn.java、StdOut.java、StdDraw.java 和 StdAudio.java 下载到与您的程序相同的目录中。”

一旦你这样做了,导入应该就可以工作了。

注意:所有四个文件都不在包中,因此您应该将它们“下载”到“标准”包中。这意味着您必须将它们下载到项目的根包中。

顺便说一句:不要导入import java.lang.Object.StdDraw;,而只是导入import StdDraw;

【讨论】:

  • 我如何知道我的项目的根包是什么?所有 .java 文件只有一个文件夹,我将这些文件复制到该文件夹​​中。它仍然无法识别它们。
  • 你使用了错误的导入,调整它 - 我已经调整了我的答案!
  • @Sother 你不能从默认包中导入类。如果要使用包,则需要使用一个子目录,即包的名称。
  • @MartinFrank,无论哪种方式,导入都会出现相同的错误 - cannot find symbol
  • @PeterLawrey 你是说我应该更改子目录的名称以反映包的名称吗?对您的意思感到困惑...我尝试在所有文件中使用package <direcotry-name>;,然后使用javac <directory-name>/*.java 编译上一层,但这无济于事。仍然会导致 cannot find symbol 错误。
【解决方案2】:
  1. 首先检查 IDE 的编码。它应该设置为 UTF-8。如果您使用的是 MS Windows 操作系统,这一点很重要。

  2. 然后在与您正在编写的程序包相同的包中创建 StdDraw.java 类。删除类声明,只保留包声明。

  3. 然后访问此页面:https://introcs.cs.princeton.edu/java/stdlib/StdDraw.java

  4. 复制其所有内容(Ctr-A、Ctrl-C),然后将其粘贴到您之前创建的 StdDraw.java 文件中。

  5. StdDraw.java 有自己的 main 方法,因此请尝试运行它以检查库是否正常工作。您应该会看到一个带有四个奇怪数字的窗口:)。

  6. 不要再碰 StdDraw.java。现在您可以轻松导入 StdDraw 库并使用类名引用其方法。

享受

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2017-02-23
    • 2021-03-13
    • 2022-01-16
    相关资源
    最近更新 更多