基于命令行与IDEA实现
前提条件:
- 已下载合适的JDK版本并正确配置了运行环境
- Windows PowerShell或cmd能正常运行
- IntelliJ IDEA能正常运行
- 已下载并解压了
algs4.jar
和algs4-data.zip
,假设你将它们全都解压到了F盘的根目录下
文件位置
类型一:将edu文件夹作为IDEA项目打开,则java文件和class文件的存储路径均为F:\edu\princeton\cs\algs4
类型二:文件—新建—项目—选择左侧”新建项目“,然后填写相关信息,接着复制或移动java文件和class文件到指定文件夹,你也可以只移动java文件,然后选择构建项目即可。假设经过设置后标准库的java文件和class文件的存储路径分别为
F:\Algorithm\src\edu\princeton\cs\algs4
F:\Algorithm\out\production\Algorithm\edu\princeton\cs\algs4
类型三:删除所有java文件中的package edu.princeton.cs.algs4
语句 将修改后的java文件放入指定的目录下,假设你放到了CMD的默认启动路径,本人的是C:\Users\HP>
演示环境:
系统:Windows 10 专业版 22H2
软件:IntelliJ IDEA 2022.2.3 (Ultimate Edition)、CMD.exe
一、编译运行标准库中的RandomSeq.java:
方法一、用CMD命令
(一)操作步骤
1.打开cmd或IDEA的终端,跳转到edu的上一级目录
2.编译
3.运行
(二)具体命令
类型一:
F:
javac edu\princeton\cs\algs4\RandomSeq.java
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
类型二:
cd F:\Algorithm\src
javac edu\princeton\cs\algs4\RandomSeq.java
cd F:\Algorithm\out\production\Algorithm
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
类型三:
javac RandomSeq.java
java RandomSeq 5 100.0 200.0
(三)注意事项
1.在类型一和类型二中,必须让cmd从edu的上一级目录加载edu.princeton.cs.algs4.RandomSeq
类,否则程序将无法正确执行。例如,假设cmd跳转到了class文件的存储目录中,那么
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
和java RandomSeq 5 100.0 200.0
都将无法找到或加载主类。
方法二:用IDEA
1.若无class文件或class文件路径错误,则先构建项目
2.运行—编辑配置或从右上角进入:“程序实参”相当于命令行参数,“重定向输入自”相当于重定向输入,“将控制台输出保存到文件”相当于重定向输出
注意:若找不到这三个选项,则点击“修改选项(M)”,然后勾选上述三个选项
二、编译运行BinarySearch.java
说明:仅介绍IDEA的操作方法,CMD、IDEA终端或Eclipse太麻烦,感兴趣的可以自己尝试实现。
1.在src下创建软件包,例如Searching
2.编写BinarySearch.java
package Searching;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import java.util.Arrays;
public class BinarySearch {
public static int rank(int key, int[] a) {
int lo = 0, hi = a.length - 1;
while (lo <= hi) {
// Key is in a[lo..hi] or not present.
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 = In.readInts(args[0]);
Arrays.sort(whitelist);
while (!StdIn.isEmpty()) {
int key = StdIn.readInt();
if (rank(key, whitelist) < 0)
StdOut.println(key);
}
}
}
3.运行—编辑配置
工作目录:F:\Algorithm\src
程序参数:algs4-data\tinyT.txt
重定向输出(将控制台输出保存到文件):algs4-data\tinyW.txt
4.运行程序,Ctrl+D结束输入。程序可能的结果如图所示
插件推荐
1.The Chinese (Simplified) Language Pack / 中文语言包
如果你也喜欢中文界面,那就去文件—设置—插件—Marketplace中下载它吧。Jetbrains官方出品,完善程度较高。
2.Translation
1)默认翻译引擎为Google翻译,语言朗读功能(TTS)也是基于Google翻译的,但由于2022年10月1日谷歌停止了对中国大陆地区提供翻译服务,上述两项功能或服务均无法正常使用,开发者正在着手解决。如果你仍然想要使用这两项功能或服务,请查阅插件公告。
2)有道翻译:需要配置。文件—设置—工具—翻译—选择“有道翻译”—配置,若无应用程序ID和密钥,则需前往有道智云申请。首次注册用户可以领取50体验金,添加客服微信并发送账号可额外获得50体验金,体验金用完之后就需要付费使用了,具体价格详见有道智云AI开放平台—价格中心。
3)百度翻译:需要配置,操作步骤见同2)。标准版通用翻译引擎个人免费额度为一百万字符/月。
4)阿里翻译:需要配置,操作步骤见同2),比前两个稍微复杂一点。标准版通用翻译引擎和专业版翻译引擎(主要针对电商领域)的个人免费额度为一百万字符/月,插件默认调用的是标准版。
如何选择? 就文档翻译、文本翻译和语音合成等功能来说,标准版通用翻译引擎每个月的免费额度绰绰有余,个人更倾向百度和阿里。翻译准确度方面,由于没有大规模实测,所以不敢妄下定论,只举一个例子以供参考:
/**
* Returns a random integer uniformly in [0, n).
*
* @param n number of possible integers
* @return a random integer uniformly between 0 (inclusive) and {@code n} (exclusive)
* @throws IllegalArgumentException if {@code n <= 0}
* @deprecated Replaced by {@link #uniformInt(int n)}.
*/
@Deprecated
public static int uniform(int n) {
return uniformInt(n);
}
/**Returns a random integer uniformly in [0, n).
*Google翻译:在[0, n)中均匀地返回一个随机整数。
*有道翻译:返回统一在[0, n)中的随机整数。
*百度翻译:返回[0, n)中一致的随机整数。
*阿里翻译:在 [0, n) 中一致地返回一个随机整数
*/