在Eclipse下配置算法(第四版)运行环境

时间:2022-05-17 15:09:46

第一步:配置Eclipse运行环境

Eclipse运行环境配置过程是很简单的,用过Eclipse进行java开发或学习的同学应该都很熟悉这个过程了。

配置过程:

(1)系统环境:Windows7 64位

(2)下载JDK和Eclipse安装包,JDK下载地址Eclipse下载地址

(3)安装JDK和Eclipse

JDK安装过程很简单,一直下一步就可以了,安装路径可以根据自己喜好选择;Eclipse不需要安装,直接解压就可以用,最好是把eclipse.exe发送到桌面快捷方式,用的时候直接桌面双击就可以了

(4)设置环境变量

在桌面点击“计算机”,右键“属性”,“高级系统设置”,“环境变量”,可以新建或编辑系统环境变量

  • JAVA_HOME=  C:\Program Files\Java\jdk1.8.0_60(这里改成你自己安装的jdk的安装路径来)
  • CLASSPATH=  .;%JAVA_HOME%\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
  • 新建用户变量PATH=%JAVA_HOME%\bin;
  • Path= %Java_Home%\bin;%Java_Home%\jre\bin;(注意这条要直接插到已有的Path的最前面不然在cmd中输入java会出错!)

在Eclipse下配置算法(第四版)运行环境

(5)查看环境变量是否配置成功

配置完成后在命令行中输入Java -version查看jdk版本,输入javac测试环境变量是否配置成功。配置成功后如下图:

在Eclipse下配置算法(第四版)运行环境


第二步:在Eclipse下配置算法(第四版)代码运行环境

(1)新建一个项目工程:Algorithms4th。

(2)在项目中导入algs4.jar和stdlib-package.jar(注意是stdlib-package.jar不是stdlib.jar此处是一个坑!)两个文件,这两个文件可在官网下载到

右键工程名Algorithms4th->Build Path->Configure Build Path->Libraries->Add External JARs,选择jar包所在路径并导入

在Eclipse下配置算法(第四版)运行环境

到这一步,eclipse的环境配置已经完成,但是《算法》中的程序多数都是通过输入重定向来获得输入的,例如BinarySearch这个程序就是通过重定向输入文件:java BinarySearch tinyW.txt < tinyT.txt。但是Eclipse中不方便使用重定向,接下来告诉大家解决方法。


第三步:运行代码(并解决重定向问题)

二分查找测试用例:

(1)从官网下载algs4-data.zip文件,解压后放入项目文件夹下,该文件中包含有算法4的示例代码运行需要的测试数据,原书中是通过重定向的方式使用的,这里在Eclipse中也是可以使用的,解决方法如下。

(2)在eclipse中运行重定向输入的程序,以BinarySearch.java 为例。右键项目文件BinarySearch.Java->Run as->Run Configuration->Common

在Eclipse下配置算法(第四版)运行环境

在Input File中选择输入文件(tinyT.txt)所在位置,然后选择Arguments,在Program arguments中输入参数文件tinyW.txt的地址,如下图所示

注意:我这里的两个文件已经事先放在了项目文件夹下,当然也可以填写文件的绝对路径

在Eclipse下配置算法(第四版)运行环境

(3)运行结果

在Eclipse下配置算法(第四版)运行环境

另外BinarySearch.java在Eclipse中运行的另一种解决方法是改写代码然后将代码带参数运行:

代码改写为:

 public static void main(String[] args) {
         int[] whitelist = In.readInts(args[0]);//参数1
         Arrays.sort(whitelist);
         int[] a2=In.readInts(args[1]);//参数2
         for(int key:a2) {
             if(rank(key,whitelist)==-1)
             StdOut.println(key);
         }

         /*
         //read key; print if not in whitelist
         while(!StdIn.isEmpty())
         {
             int key = StdIn.readInt();
             if(rank(key, whitelist) < 0)
                 StdOut.println(key);
         }
         */

运行参数设置:

在Eclipse下配置算法(第四版)运行环境

运行结果:

在Eclipse下配置算法(第四版)运行环境


追加:算法4代码示例中的StdIn和StdOut的输入流和输出流问题

总结:

  1. 算法4中的In输入对应于Eclipse中Run Configuration的Arguments中的 program arguments。
  2. 算法4中的StdIn对应于Common的Standard Input and Output中的Input File,或者直接从控制台Console输入。
  3. 算法4中的Integer.parseInt(args[0])、Double.parseDouble(args[0)也是从program arguments中读取输入的。

二分查找算法测试用例:

 public static void main(String[] args) {
         int[] whitelist = In.readInts(args[0]);//参数1,从In输入
         Arrays.sort(whitelist);

         //read key; print if not in whitelist
         while(!StdIn.isEmpty())
         {    //读取键值,如果不存在与白名单中则将其打印
             int key = StdIn.readInt();    //StdIn输入
             //rank是二分查找算法实现
             if(rank(key, whitelist) < 0)
                 StdOut.println(key);
         }

P94 1.3.3.8 Stack的测试用例

需要从标准输入流读取一个字符串,用以进行对用链表构建的Stack数据结构的测试,标准输入是:

to be or not to - be - - that - - - is

 public class P94StackTestClient{
     public static void main(String[] args)
     { // Create a stack and push/pop strings as directed on StdIn.
         Stack<String> s = new Stack<String>();
         while (!StdIn.isEmpty())
         {
             String item = StdIn.readString();  //从StdIn输入
             if (!item.equals("-"))
                 s.push(item);
             else if (!s.isEmpty()) StdOut.print(s.pop() + " ");
         }
         StdOut.println("(" + s.size() + " left on stack)");
     }
 }

解决办法1:输入进txt文档,然后像第三步中那样降程序带参数运行然后在标准输入里添加文件,如下图所示:

(注意:一行后面一定要回车,这样才能表示一行结束,是真正的一行。否则无法成功读取。)

在Eclipse下配置算法(第四版)运行环境

在Eclipse下配置算法(第四版)运行环境 

解决方法2:将程序直接运行然后在Console控制台中输入"to be or not to - be - - that - - - is",回车,按Ctrl+Z终止输入流,也能运行。

在Eclipse下配置算法(第四版)运行环境

终止Console继续读入流:
书上有一些题目需要从Console读取流并进行处理,从Console读取有个问题就是如何终止流的输入,如果不手动终止输入StdIn.isEmpty()始终是false,这样后面的代码始终无法执行,Eclipse默认的EOF是Ctrl+Z(在Console输入完内容按回车以后按Ctrl+Z就会终止当前输入,即StdIn.isEmpty()为true),但有个问题是有时第一次运行后用Ctrl+Z终止流输入是有效的,再次运行那个类Ctrl+Z就失效了。
解决方法是鼠标点击代码编辑页面,再点击控制台,Ctrl+Z就有效了。注意在Ctrl+Z终止之后如果后面的代码还有输入的地方,后面的输入是无法执行的。
 
Eclipse命令行参数使用:
Run - Run Configurations - 右边 Arguments 里Program arguments中写。
如果写的是文件,默认该文件要放在项目的根目录里。当然也可以换位置,勾选Working directory的Other,然后选择文件目录即可。
Eclipse开启断言:
Run - Run Configurations - Arguments选项卡,在VM arguments里输入-ea代表开启断言,输入-da代表禁止断言。

至此在Eclipse下配置算法(第四版)的代码运行环境的过程就结束了,这个过程也是在参考了网上的众多教程和博客以及自己的实际实验过程之后总结的,欢迎大家参考。终于可以愉快地开始算法4的学习了。

2018-03-17 12:41:42