如何正确导入stddraw?

时间:2015-03-19 03:27:03

标签: java intellij-idea import stddraw

编辑:IntelliJ CE

我想要的:能够写

setCanvas(500,500);

而不是

StdDraw.setcanvas(500,500);

问题:我无法弄清楚如何正确导入Stddraw库。 如果我只是做

import StdDraw;

IntelliJ告诉我“StdDraw”符号无法解析。 如果我发表评论,我可以从StdDraw调用方法,但我必须写     StdDraw.setcanvas(500500);

StdDraw.java与Solver.java位于同一目录。

代码:

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.Scanner;
//    import StdDraw;//StdDraw is in the same directory as Solver

public class Solver {

    public static void main(String[] args) {
        System.out.println("Solver main is running.");

        StdDraw.setCanvasSize(500, 500);
        StdDraw.setPenColor(StdDraw.RED);
        StdDraw.filledRectangle(0,0,10,10);
     }
}

我已经尝试过了: - 确保Stddraw.java与我正在编译和运行的文件位于同一目录中 - 看http://introcs.cs.princeton.edu/java/stdlib/javadoc/StdDraw.html - 搜索完整的代码示例,即。代码,显示如何导入库 - 搜索YouTube教程 - 阅读https://www.jetbrains.com/idea/help/library.html - 摆弄在StdDraw面前添加东西,例如。 stblib.StdDraw

5 个答案:

答案 0 :(得分:1)

你说:

 What I want: Be able to write

     setCanvas(500,500);

 Instead of

     StdDraw.setcanvas(500,500);

这不符合Java的基本规则吗?

你不能写

    setCanvas(500,500);

除非你在" StdDraw"其他方法的等级" StdDraw" class调用" setCanvas"方法

否则,您必须创建" StdDraw"的实例。第一课:

    e.g. StdDraw stdDraw = new StdDraw();

然后使用该实例调用方法:

    e.g. stdDraw.setCanvas(500,500); 

或者你用这种方式调用方法:

    StdDraw.setcanvas(500,500);

这是Java的基础知识,对吧?

顺便说一下,如果" StdDraw" class与class" Solver"位于同一目录中,您无需导入它即可使用它。

我使用eclipse。我把课程" StdDraw"与其他类在同一个包中。这样,我就不必使用" import"关键词导入" StdDraw"。我只是使用" StdDraw"的方法。静态的方式。只有当它不在同一个包中时才导入它。

仅供参考:我正在阅读Robert Sedgewick" Algorithms",我从未见过如此直接调用方法:

 uniform(N-i); or 
 printf("%.2f\n", x); or
 point(x0, y0); or
 line(x0, y0, x1, y1); or
 circle(x, y, r); or
 square(x, y, r); or
 polygon(x, y); etc. etc....

相反,它总是:

 StdRandom.uniform(N-i); or 
 StdOut.printf("%.2f\n", x); or
 StdDraw.point(x0, y0); or
 StdDraw.line(x0, y0, x1, y1); or
 StdDraw.circle(x, y, r); or
 StdDraw.square(x, y, r); or
 StdDraw.polygon(x, y); etc. etc....

我希望这会有所帮助。

答案 1 :(得分:0)

您需要将Stdlib添加到Java项目的本地库中。 StdDraw是此Stdlib库的一部分。

  1. 首先,您需要download stdlib.jar文件
  2. 然后您在Java项目中创建一个文件夹(将其命名为“ lib”)
  3. 将stdlib.jar复制并粘贴到lib文件夹中
  4. 使用IntelliJ打开Java项目。
  5. 单击文件->项目结构->模块->依赖项
  6. 点击+号,然后选择Library-> Java
  7. 然后您需要在lib文件夹中选择stdlib.jar

现在您可以使用StdDraw类。您无需在文件顶部导入该类。

答案 2 :(得分:-1)

我一直使用StdDraw

在您的包裹声明下,输入:

import stddraw.StdDraw;

然后你需要做的所有事情都应该工作,同时确保实际的类正确地在你的文件中

答案 3 :(得分:-1)

将此导入添加到您的班级。

import static StdDraw.*;

这意味着可以使用StdDraw类的所有静态方法而不用StdDraw.作为前缀它还假设StdDraw类在默认包中,这通常是不满意,但似乎是图书馆所做的。

答案 4 :(得分:-1)

您可以在此处下载stdlib.jar库:http://introcs.cs.princeton.edu/java/stdlib/

然后按照本教程导入它:https://stackoverflow.com/a/32853178/2048865