IDE解决算法4中环境配置问题algs.jar
-
首先我们要下载algs.jar 提取码:wsug ,这个东西官网是访问的慢而且CSDN大部分都要花币,我也是找了好久才找到的。我就直接给pan链接了。
-
CLASSPATH加入algs.jar的路径,记住千万不要忘掉 " ; " 。同时在项目中添加algs.jar(这个一百度就会添加)
3 调出terminal终端,不知道怎么调可以百度,比较简单。
现在就可以进行操作了。
- 我在刚开始使用终端的时候还遇见了很多坑。
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);
}
}
}
}