使用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:字幕 下载之后,请用迅雷播放器打开,因为迅雷可以直接在线搜索字幕. 如果以下链接失效,请在下边留言,我再更新 ...
随机推荐
- SHELL脚本获取域名对应的IP地址
单个获取 编写角本pingip.sh #!/bin/sh ADDR=qq.com TMPSTR=`ping ${ADDR} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'` ...
- 怎么样给Oracle数据库中的表添加列?
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- apisix~lua插件开发与插件注册
开发插件的步骤 在APISIX中,要自定义插件,一般需要按照以下步骤进行操作: 编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能.可以根据APISIX提供的插件开发文档和示例进行编写. 将 ...
- 聊聊MySQL是如何处理排序的
本文分享自华为云社区<MySQL怎样处理排序️如何优化需要排序的查询?>,作者:菜菜的后端私房菜. 前言 在MySQL的查询中常常会用到 order by 和 group by 这两个关键 ...
- js毫秒转时分秒
const formatSeconds = (value) => { if (value === 0 || value < 1000) return '0秒'; var timestamp ...
- 将大量文件的拓展名中大写字母改为小写:Python实现
本文介绍基于Python语言,基于一个大文件夹,遍历其中的多个子文件夹,对于每一个子文件夹中的大量文件,批量将其文件的名称或后缀名中的字母由大写修改为小写的方法. 本文期望实现的需求为:现有一 ...
- feign入门
.net core: feign.net是一个spring cloud feign组件的c#移植版 https://github.com/daixinkai/feign.net 在.net core ...
- Vue——基本使用
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统.我们不再和 HTML 直接交互了.一个 Vue 应用会将其挂载到一个 DOM 元素上 (对于这个例子是 #app ...
- Hugging Face x LangChain: 全新 LangChain 合作伙伴包
我们很高兴官宣发布 langchain_huggingface ,这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包.这个新的 Python 包旨 ...
- 8.18考试总结(NOIP模拟43)[第一题·第二题·第三题·第四题]
愿你和重要的人,在来日重逢. 前言 题目名字起的很随意... 这天 Luogu 的运势好像是大凶(忌:打模拟赛,注意报零). 但是考得还不错,拿到了这么多场模拟赛以来第二三个场上AC. 所以说,我爱大 ...