如何正确导入stddraw



编辑器:IntelliJ CE

我想要的:能够写

setCanvas(500,500);

代替

StdDraw.setcanvas(500,500);

问题:我不知道如何正确导入Stdraw库。如果我只是做

import StdDraw;

IntelliJ告诉我无法解析"StdDraw"符号。如果我把它注释掉,我可以从StdDraw调用方法,但我必须写StdDraw.setccanvas(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);
     }
}

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

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

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

现在可以使用StdDraw类。您不需要导入文件顶部的类。

我一直使用StdDraw

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

import stddraw.StdDraw;

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

将此导入添加到您的类中。

import static StdDraw.*;

这意味着StdDraw类的所有静态方法都可以使用,而无需在它们前面加上StdDraw.。它还假设StdDraw类在默认包中,这通常是不受欢迎的,但似乎是该库所做的。

你说:


 What I want: Be able to write
     setCanvas(500,500);
 Instead of
     StdDraw.setcanvas(500,500);

这不是违反Java的基本规则吗?

你不能写

    setCanvas(500,500);

除非您在"StdDraw"类中,其中"StdPraw"类的其他方法调用"setCanvas"方法。

否则,您必须首先创建一个"StdDraw"类的实例:

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

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

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

或者你这样称呼这个方法:

    StdDraw.setcanvas(500,500);

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

顺便说一句,如果"StdDraw"类与类"Solver"在同一目录中,则无需导入即可使用。

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

仅供参考:我正在读Robert Sedgewick的《算法》,在这本书中,我从未见过像你想要的那样直接调用方法:

 uniform(N-i); or 
 printf("%.2fn", 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("%.2fn", 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....

我希望这能有所帮助。

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

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

相关内容

  • 没有找到相关文章

最新更新