IDE解决算法4中环境配置问题algs.jar

IDE解决算法4中环境配置问题algs.jar

  1. 首先我们要下载algs.jar 提取码:wsug ,这个东西官网是访问的慢而且CSDN大部分都要花币,我也是找了好久才找到的。我就直接给pan链接了。

  2. CLASSPATH加入algs.jar的路径,记住千万不要忘掉 " ; " 。同时在项目中添加algs.jar(这个一百度就会添加)

在这里插入图片描述

3 调出terminal终端,不知道怎么调可以百度,比较简单。

在这里插入图片描述

现在就可以进行操作了。

  1. 我在刚开始使用终端的时候还遇见了很多坑。

javac进行编译的时候怎么写,java编译的时候怎么写,用图片给出来吧。我们举两个例子,一个就是算法4中的求平均数,另一个就是二分查找BinarySearch

这是编辑好的代码
在这里插入图片描述

终端如何输入第一坑:编码错误,解决方法很简单 javac -encoding UTF-8 AverageTest\Average.java。
在这里插入图片描述

  • 第二坑:找不到类,请确保你的路径是对的,例如我的终端路径是F:\JavaWorkSpace\Algorithm4\src>
    我的包结构:是下图:

在这里插入图片描述
那么我的语句就是javac -encoding UTF-8 AverageTest\Average.java 记住是’’’’ 。一定带.java 。执行完javac后会产生 .class文件 ,
在这里插入图片描述

扫描二维码关注公众号,回复: 10133308 查看本文章
  • 第三坑:编译好后 输入:java AverageTest.Average( 记住这里变成" . 了,且不能有.class后缀" )
    这时可能会发现可以编译
    但是在运行.class文件时就是找不到。记住,这是包路径问题,如果你不知道怎么解决就把目录结构搞得和我一样。然后删掉你的.class文件重新编译(记住一定保证你.java文件的包路径正确)。一切解决后正确结果就是下图:

在这里插入图片描述

贴出代码:

package AverageTest;

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

/**
 * @author: chenguanxu
 * @date: 2020/3/13 21:55
 * @description: TODO
 * @version: 1.0
 */
public class Average {

    public static void main(String[] args) {
        double sum = 0.0;
        int cnt = 0;
        while (!StdIn.isEmpty()){

            sum += StdIn.readDouble();
            cnt++;
        }
        double avg = sum / cnt;
        StdOut.printf("Averages is %.5f",avg);
    }
}

下面直接贴出BinarySearch(二分查找)的终端命令以及代码,这里用到的白名单和检测名单在上面的链接里都有。

在这里插入图片描述

终端命令部分 :格式和输入方式都可以看图,如果出问题,一定看看自己有没有写错。

在这里插入图片描述

附上代码:

package BinaryTest;

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

import java.util.Arrays;

/**
 * @author: chenguanxu
 * @date: 2020/3/14 9:20
 * @description: TODO
 * @version: 1.0
 */
public class BinarySearch {

    public static int rank(int key ,int[] a){
        //数组必须是有序的
        int lo = a[0];
        int hi = a.length-1;
        while(lo <= hi){
            //被查的数要么存在于lo和hi之间,要么不存在
            int mid = lo + (hi-lo)/2;
            if(key < a[mid])
                hi = mid-1;
            else if(key > a[mid])
                lo = mid+1;
            else
                return  mid;
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] whitelist = new In(args[0]).readAllInts();
        Arrays.sort(whitelist);
        while (!StdIn.isEmpty()){
            //读取数值,如果不存在雨白名单中则删除
            int key = StdIn.readInt();
            if(rank(key , whitelist) < 0){
                StdOut.println(key);
            }
        }

    }
}
发布了12 篇原创文章 · 获赞 0 · 访问量 100

猜你喜欢

转载自blog.csdn.net/adressdeep/article/details/104867886