编辑器: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库的一部分。
- 首先,您需要下载stdlib.jar文件
- 然后在java项目中创建一个文件夹(将其命名为"lib")
- 复制&将stdlib.jar粘贴到lib文件夹中
- 使用IntelliJ打开您的java项目
- 单击"文件"->项目结构->模块->依赖项
- 单击+号并选择"库"->Java
- 然后,您需要在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