今天在测试算法第四版中第一个算法二分查找(BinarySearch)时,发现总是编译不成功(没有找到相应的静态方法),估计是没有成功导入包。
我是用了书网站提供的Hello World in Java on Windows直接安装形成的一个Java环境。
首先是在原书代码中要导入相应的静态方法
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
或添加整个包
import edu.princeton.cs.algs4.*;
其次,在编译时候要确保用javac-algs4 BinarySearch.java
,运行时也要使用java-algs4 BinarySearch tinyW.txt < tinyT.txt
。因为上面提供的环境中并没有引入CLASSPATH环境变量,如果直接采用javac
和java
就会导致找不到algs4.jar这个包。如果一定要用javac
和java
,那么就在环境变量中把algs4.jar的地址添加到CLASSPATH中,注销或重启后生效。
PS. 已过时API问题
书中源码中的int[] whitelist = In.readInts(args[0]);
改成int[] whitelist = new In(args[0]).readAllInts();
即可。这样的代码风格也更加符合Java一切皆对象的理念吧。
参考资料:
- 官网最新的代码,以及相应的解释。http://algs4.cs.princeton.edu/code/
- https://neue.v2ex.com/t/301773