编辑: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
答案 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库的一部分。
现在您可以使用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