《算法第四版》如何使用命令行输入
我最近在学习《算法第四版》,发现其中使用命令行输入文件作为参数的,如何输入文件作为参数是困扰我的一个难题,使用eclipse输入,但是就是不对,可能是我的方法不对,然后我就各种百度,去查找资料,如何使用命令行输入,其实各种各样的答案,五花八门很多都不能解决问题,然后我就综合各种资料和自己的实践,总结出了如何使用使用命令行输入,因为我现在还是在刚刚开始看,等我大致看完了,再来更新命令行输入,毕竟我现在的写的都是比较浅显的知识。
以这段代码为例:
package com.jxust.cn.demo;
import java.io.BufferedReader;
import java.io.IOException;
import edu.princeton.cs.algs4.ST;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class FrequencyCounter2 {
public static void main(String[] args) throws IOException {
int minlen = Integer.parseInt(args[0]);
ST<String,Integer> st = new ST<String,Integer>();
while(!StdIn.isEmpty()) {
String word = StdIn.readString();
if(word.length() < minlen) continue;
if(!st.contains(word)) st.put(word, 1);
else st.put(word, st.get(word)+1);
}
String max = " ";
st.put(max, 0);
for(String word : st.keys()){
if(st.get(word) > st.get(max))
max = word;
}
StdOut.println(max+" "+st.get(max));
}
}
大家忽视报错,因为我是使用命令行运行,哪个报错的代码和我们要测试的代码没有关系,就不处理报错的代码,只要专注于FrequencyCounter2.java就行。
FrequencyCounter2.java这个代码里面,有包名 :
package com.jxust.cn.demo;
所以我们要在src的目录下去运行代码,而不是在FrequencyCounter2.java所在的目录,如下
B编译和运行命令行就有点门道了,小心踩坑,我就踩坑了,如果不是因为踩坑了,我应该早就学会如何使用命令运行,不至于拖到现在学习算法第四版了
首先对代码进行编译
编译有四种方式,这四种方式都是可以的,大家主反斜杠的方向的写法,其次要引入依赖的外部库algs4.jar这是代码需要的,不引入就会报错。
第一种方式
E:\eclipse-workspace\Algorithms\src>javac -cp F:\Algs4\algs4.jar com\jxust\cn\demo\FrequencyCou
nter2.java
第二种方式
E:\eclipse-workspace\Algorithms\src>javac -cp F:\Algs4\algs4.jar com/jxust/cn/demo/FrequencyCou
nter2.java
第三种方式
E:\eclipse-workspace\Algorithms\src>javac -cp F:/Algs4/algs4.jar com/jxust/cn/demo/FrequencyCou
nter2.java
第四种方式
E:\eclipse-workspace\Algorithms\src>javac -cp F:/Algs4/algs4.jar com\jxust\cn\demo\FrequencyCou
nter2.java
其次是运行,这就有点小坑,为什么?
因为它没有四种命令行模式,反斜杠随便写的话,就可能出错,
入下是四种输入模式
可以看出来只有以下两种是对的
E:\eclipse-workspace\Algorithms\src>java -cp F:\Algs4\algs4.jar; com/jxust/cn/demo/FrequencyCounter2 1 <
tinyTale.txt
it 10
E:\eclipse-workspace\Algorithms\src>java -cp F:/Algs4/algs4.jar; com/jxust/cn/demo/FrequencyCounter2 1 <
tinyTale.txt
it 10
有以下几点需要注意
1:-cp F:/Algs4/algs4.jar后面要加冒号";",其次冒号后面要加一个空格。在编译期间不用加冒号,运行时才要加上冒号
2:注意反写杠的方向,不是任意一种都行,我个人比较推荐使用以下这种方式
今天就聊到这里,下次等学会了,再来详细说一说哈,看看能不能顺便把eclipse的运行方式也搞懂。希望能够帮到大家。