使用VS Code 学习算法(第四版)

  最近在学习算法(第四版),书中一直在使用命令行来执行Java程序,而使用Eclipse时,很难使用命令行,或者说我根本就不会用,于是就想研究一下使用VS Code来编写代码,使用命令行来执行程序。看了一下官网,就知道了安装Java Extension Pack。 打开VS Code, 在插件中搜索Java,

   点击install, 等待安装完成。现在就要用最原始的方式来编写Java 程序了。创建一个空文件夹,然后用VS Code打开该文件夹,创建一个Evaluate.java文件,直接把书上的代码复制过来(截取部分代码如下),

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

// .....

while(!StdIn.isEmpty()) {
    String s = StdIn.readString();
    // .......
    StdOut.println("S");  
}

  这个类中使用了algs4.jar中的StdIn和StdOut类,VS Code中,这部分代码标红了,它没有办法解析包和类。这是肯定的,因为包还没有引入。那怎样才能引入包,在Evaluate类中正确使用algs4.jar中的类呢?想的第一件事,就是把algs4.jar放到根目录下,也就是和Evaluate类同一级目录,

  因为CLASSPATH设置了.; 表示当前文件夹,我想,Java在编译的时候应该会从当前文件夹开始寻找包,然后进行编译。我错了,Java 编译直接报错了。

  Java 应该是从当前文件夹开始寻找类,不会寻找包。当然,第二件事就是把algs4.jar放到CLASSPATH中。在Linux下找到 .bashrc, sudo mousepad .bashrc。 mousepad是 Linux Lite 下面的文本文件查看器。输入密码,打开文件。输入密码时,要注意,只有在英文输入法下输入,才没有问题,在中文输入法下输入密码,竟然不正确。此时光标在等待

  在文件的最后

export CLASSPATH=.:$JAVA_HOME/lib:/home/sam/jar/algs4.jar

  /home/sam/jar/algs4.jar就是algs4.jar所在的路径。点击保存,关闭文件,此时光标停止。这时要重新开一个命令行窗口(文件--> 打开终端), 然后source .bashrc

   再重新打开VS Code。这时VS Code中并没有变化,代码还是标红,难到CLASSPATH 没有设置成功? 打开VS Code中的terminal, echo $CLASSPATH

   有了啊,可以看到CLASSPATH中有了algs4.jar,设置成功了。从理论上来说,任何Java程序都可以找到并使用algs4.jar 中的类。尝试编译一下,javac Evaluate.java,成功了,但VS Code中标红还是看着不舒服。此时,看到VS Code的左下角有一个JAVA PROJECTS,  点击一下,展开它

   这和Eclipse很像,Referenced Libraries不就是引入的第三方jar包吗?鼠标移上去,出现了一个+号,鼠标放到+号上,显示“Add Jar Library to Project Classspath”, 点击它,弹窗,直接定位到当前文件夹下的algr4.jar, 

   选中这个jar,并点击弹窗下的Select Jar Libraries, 弹窗关闭,添加成功,当然,你可以添加任意路径下的jar包

   同时VS Code中多了一个.vscode文件夹,点击,打开它,一个settings.json文件

   它定义的就是Java项目所引用的包,此时VS Code中的标红终于消失了。

  这时,是不是可以把CLASSPATH 中的algs4.jar去掉,我试了一下,不可以,java无法编译。看了一下文档,说是要在项目根目录添加.classpath 文件,然后把包加入进去,我试了很久,怎么都设置不成功。不过看文档,发现了VS Code 默认会从项目根目录下的lib目录下引用jar,也就是说,我们可以不用像上面一样手动添加第三方jar包。再新建一个项目,然后编写Evaluate.java,再新建lib目录,把algs4.jar放入进去,可以看到VS Code中没有任何错误提示

   VS Code自动把lib下面的jar包放到了Referenced Libaray下面。javac Evaluate.java, 编译成功,生成了Evaluate.class,现在就要执行代码,书上的执行方式是

  我先 java Evaluate ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ), 报错了

   然后看到书上换行了,我就先输入java Evaluate,然后按Entter,再输入 ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ), 突然发现再按Enter没有办法结束了,光标一直向下,

   这时想到了ctrl + d 或 ctrl+ z来结束输入,按ctrl + d,终于结束,输出结果了。

 

posted @ 2021-07-09 12:24  SamWeb  阅读(673)  评论(0编辑  收藏  举报