关于运行《算法》中的程序的操作以及一些小问题

关于运行《算法》中的程序的操作以及一些小问题

近日在学习著名的《算法(第四版)》(Algorithms Fourth Edition),书的内容非常好,而且里面也有很多标准的示例程序。学习编程,重要的还有实践,所以就跟着程序练习代码,可操作中却发生不少小问题……

(注:笔者以Eclipse为例,介绍自己解决的方法,水平有限望多多包涵……)

1.首先下载这两个jar包。

运行前需要导入两个包:algs4.jarstdlib-package.jar
书本中有提到,除了使用系统的标准库外,也有与书本代码配套的其它库。跟着书本走,一起练习,不然你可能会看不懂,这是从哪来的?

    int[] whitelist = In.readInts(args[0]);
	Arrays.sort(whitelist);
	while(!StdIn.isEmpty()) {
		int key = StdIn.readInt();
		if (rank(key, whitelist) < 0) {
			StdOut.println(key);
			}
		}

In?readInts?StdIn.isEmpty()?其实这些库里都有,但没有导入,如果直接使用的话就用报错,下面我们把它导入。

直接上官网找,或者搜索别人的。
都行

2.在Eclipse中导入。

具体操作是:选中你所创建的项目(project),右键,点击最底下的Properties,点击Java Bulid Path,在右边的Libraries中点击右侧栏的Add External JARs…,打开即可。

关于运行《算法》中的程序的操作以及一些小问题_第1张图片

关于运行《算法》中的程序的操作以及一些小问题_第2张图片

3.注意JDK版本号 or package-info

看似一切顺利,我个人则遇到这种情况

Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for F:\JAVA\algs4.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: TestAlgs4.class found in top-level directory (unnamed package not allowed in module)

接下来我找到的原因:
大意是,导入的这个jar包这里没有名字,JDK9以上有这个模块化(?)的要求,所以报错。

关于运行《算法》中的程序的操作以及一些小问题_第3张图片

显而易见的,有两个解决方法:

1. 改变使用的JDK版本,或直接在创建Project的时候把版本号改成1.8。(它默认是最新的)

关于运行《算法》中的程序的操作以及一些小问题_第4张图片

2. 把包(packet)中的所有package-info.java文件删除。

关于运行《算法》中的程序的操作以及一些小问题_第5张图片

4.关于输入输出

书本中的输入都是命令行,而我们有Eclipse自然也用不上这个,(或者你在官网上下载了algs4.exe,跟着教材里面来操作,虽说不用科学上网,但是我下不了……),所以你可能会遇到:

% java BinarySearch largeW.txt < largeT.txt

这意思是以largeT.txt中数据为输入,结果输出到largeW.txt中,显然我们练习中更习惯数据台,我需要输入几个数据就输入,然后马上处理出结果。网上有对此的解决方法,我觉得可以改用Scanner类,能达到同样的效果。

PS:每次调这些东西都能弄上我大半天,心态爆炸的一天。希望大家可以多多使用搜索,前人走过的弯路就不要再踏一次了。另外,这是我创建的第一个博客,接下来将继续更新《算法(第四版)》中的内容,作个总结,也让自己更好的学习。

你可能感兴趣的:(关于运行《算法》中的程序的操作以及一些小问题)