使用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,终于结束,输出结果了。

使用VS Code 学习算法(第四版)的更多相关文章
- 算法第四版jar包下载地址
算法第四版jar包下载地址:https://algs4.cs.princeton.edu/code/
- 算法第四版 在Eclipse中调用Algs4库
首先下载Eclipse,我选择的是Eclipse IDE for Java Developers64位版本,下载下来之后解压缩到喜欢的位置然后双击Eclipse.exe启动 然后开始新建项目,File ...
- 算法第四版-文字版-下载地址-Robert Sedgewick
下载地址:https://download.csdn.net/download/moshenglv/10777447 算法第四版,文字版,可复制,方便copy代码 目录: 第1章 基 础 ...... ...
- 二项分布。计算binomial(100,50,0.25)将会产生的递归调用次数(算法第四版1.1.27)
算法第四版35页问题1.1.27,估计用一下代码计算binomial(100,50,0.25)将会产生的递归调用次数: public static double binomial(int n,int ...
- 算法第四版学习笔记之优先队列--Priority Queues
软件:DrJava 参考书:算法(第四版) 章节:2.4优先队列(以下截图是算法配套视频所讲内容截图) 1:API 与初级实现 2:堆得定义 3:堆排序 4:事件驱动的仿真 优先队列最重要的操作就是删 ...
- 算法第四版学习笔记之快速排序 QuickSort
软件:DrJava 参考书:算法(第四版) 章节:2.3快速排序(以下截图是算法配套视频所讲内容截图) 1:快速排序 2:
- 算法(第四版)学习笔记之java实现希尔排序
希尔排序思想:使数组中随意间隔为h的元素都是有序的. 希尔排序是插入排序的优化.先对数组局部进行排序,最后再使用插入排序将部分有序的数组排序. 代码例如以下: /** * * @author seab ...
- 算法(第四版)学习笔记之java实现可以动态调整数组大小的栈
下压(LIFO)栈:可以动态调整数组大小的实现 import java.util.Iterator; public class ResizingArrayStack<Item> imple ...
- 配置《算法 第四版》的Eclipse开发环境
1. 安装JAVA JAVA网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 配置环境变量(我把JAVA安装在 ...
- 算法第四版 coursera公开课 普林斯顿算法 ⅠⅡ部分 Robert Sedgewick主讲《Algorithms》
这是我在网上找到的资源,下载之后上传到我的百度网盘了. 包含两部分:1:算法视频的种子 2:字幕 下载之后,请用迅雷播放器打开,因为迅雷可以直接在线搜索字幕. 如果以下链接失效,请在下边留言,我再更新 ...
随机推荐
- 模型评测-书生浦语大模型实战营学习笔记7&大语言模型12
大语言模型学习-12.模型评测 书生浦语大模型实战营学习笔记7 视频教程特别像广告,所以这篇博客参考了很多其他内容给大家参考,主要是下面几个页面: https://zhuanlan.zhihu.com ...
- docker-compose 配置LNMP环境
仓库地址: https://gitee.com/haima1004/docker-lnmp 参考文档: 视频地址: https://www.bilibili.com/video/BV1S54y1B7K ...
- docker-compose 安装LNMP
安装DNMP https://github.com/yeszao/dnmp.git https://blog.csdn.net/weixin_34038293/article/details/9427 ...
- js中关于return和if条件处理
好玩的 // if (true) { // return // } // // 不会打印 // console.log('1') // if (false) { // return // } // / ...
- vue中render函数和h函数
"render"函数是Vue组件的一个重要方法,它用于描述组件的视图结构,并负责渲染虚拟DOM树."render"函数是一个JavaScript函数,它接受一个 ...
- prometheus使用2
参考不错的 Prometheus监控实战之node_exporter详解: https://blog.csdn.net/ygq13572549874/article/details/129115350 ...
- 昇腾开发全流程 之 MindSpore华为云模型训练
前言 学会如何安装配置华为云ModelArts.开发板Atlas 200I DK A2, 并打通一个训练到推理的全流程思路. 在本篇章,首先我们开始进入训练阶段! 训练阶段 A. 环境搭建 MindS ...
- 解读注意力机制原理,教你使用Python实现深度学习模型
本文分享自华为云社区<使用Python实现深度学习模型:注意力机制(Attention)>,作者:Echo_Wish. 在深度学习的世界里,注意力机制(Attention Mechanis ...
- js 中你不知道的各种循环测速
在前端 js 中,有着多种数组循环的方式: for 循环: while 和 do-while 循环: forEach.map.reduce.filter 循环: for-of 循环: for-in 循 ...
- 《剑指offer - 题目2》
题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 注意方 ...