《算法》第四版 IDEA 运行环境的搭建

  • Post author:
  • Post category:其他


在搭建之初,我是想不到会出现如此之多的问题。我看了网上的大部分教程,都是基于Eclipse搭建的,还没有使用IDEA搭建的教程。我相信许多读者跟我一样,在学习Java的时候没有使用过命令行编译的形式去运行Java代码,直接使用Eclipse工具去进行开发的,因此,当看到书中

% java BinarySerach xxx.txt < xxx.txt 

的时候,不免有点不知所措。笔者现在使用的IDE是IDEA,因此是想要在IDEA下搭建环境,好了废话不多说了,开始吧。





概述

环境的搭建分以下几个步骤:

  • Java 运行环境的搭建
  • IDEA 的安装与破解
  • 《算法》 运行库的下载与配置
  • IDEA 工程的创建以及在IDEA中使用命令行

前两个步骤就不写了,网上的教程一大把。





《算法》 运行库的下载与配置

  1. 首先,我们需要下载作者提供的运行库,下载地址:

    点我下载

下载红色框框的内容

下载红色框框的内容

我们需要下载两个内容,一个是库,一个是测试的数据。库是algs4.jar,数据是algs4-data.zip。

  1. 在C盘建立目录

    C:\Program Files\algs4

    将 algs4.jar 放入其中,如下所示:

algs4.jar的存放位置

algs4.jar的存放位置

ps:这里你可以放在任何你想要放的地方,笔者只是习惯放在C盘而已。

  1. 在CLASSPATH环境变量中,添加值

    C:\Program Files\algs4\algs4.jar

    (就是刚刚存放algs4.jar的路径),如下所示:

环境变量的设置

环境变量的设置

网上说,要加个 分号 ,具体我也没去深究,就这样吧。

这样下来,就完成了库的配置了。还有一个测试数据的使用,在下一节。





IDEA 工程的创建以及在IDEA中使用命令

  1. 创建一个HelloWorld工程

enter description here

enter description here

选择你的JDK,我使用的是1.6。

  1. 为项目添加jar包

Project Structure

Project Structure

添加jar包

添加jar包

  1. 解压测试数据到src目录下:

解压测试数据到src目录下

解压测试数据到src目录下

  1. 编写测试代码(1.3 节里的代码)
package Test;

public class FixedCapacityStackOfStrings {
    private String[] stack;
    private int N;

    FixedCapacityStackOfStrings(int cap){
        stack = new String[cap];
    }

    public String pop(){
        return stack[--N];
    }

    public boolean isEmpty(){
        return N==0;
    }

    public int size(){
        return N;
    }
    public void push(String s){
        stack[N++] = s;
    }
}

package Test;

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

public class FixedCapacityStackOfStringTest {
    public static void main(String[] args){
        FixedCapacityStackOfStrings s = new FixedCapacityStackOfStrings(100);
        while (!StdIn.isEmpty()){
            String item = StdIn.readString();
            if(!item.equals("-")){
                s.push(item);
            }else if(!s.isEmpty()){
                StdOut.print(s.pop() + " ");
            }
        }
        StdOut.println("("+s.size()+" left"+")");
    }
}

测试结果

测试结果

以上,就好了。