一家大公司面试到最后一轮,给了两小时的code test,一开始想复杂了,前90分钟都在往复杂上写,最后半个小时实在搞不定就写了个很简陋的读取文件,进行分析。现在重新写完整个功能,在这里文章记录一下。
写题中碰到的问题
1. 打包成jar文件
2. 引用外部jar包
3. 命令行显示help文档
4. 读取命令行
1. 打包成jar文件
使用的IDE是netbeans,所以就netbeans进行简单说明。
假设你有一个java application - Test
邮件项目,最下面的Properties选择,会看到一个Project Properties,其中有Build-Pachaging,你需要把compress JAR File打钩选中。
然后就可以右键项目,然后进行clean and build。在你的目录下,你会看到一个dist文件夹,\Test\dist,里面就有Test.jar文件。
2. 引用外部jar包
如果你使用了外部的jar包,那么你打包完的jar文件在命令行运行的时候,并不能够调用这些jar包。你需要在整个项目中放入jar包,并且配置路径,让你的程序知道在哪里调用jar包。
比如例子中我调用了Apache Commons CLI的jar包。我需要在配置文件Manifest.mf中写上Class-Path。
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Class-Path: ./lib/commons-cli-1.2.jar
然后在dist文件夹下面新建一个lib文件夹,把jar包放入。
最终运行jar文件的时候,就能正常调用jar包,正常运行。
3. 命令行显示help文档
大家可以看Apache Commons CLI的文档,使用这个jar包,能很简单的显示help提示。截取的部分代码。public static Options opts;
......
try {
opts = new Options();
opts.addOption("h", false, "Help");
opts.addOption("input", true, "Please input a file first");
opts.addOption("max", false, "Print the biggest number in the list");
opts.addOption("min", false, "Print the smallest number in the list");
opts.addOption("sort", false, "Print the sorted list");
opts.addOption("seqsum", false, "Print the maximum possible sum. P.S. this should be used after -sort");
opts.addOption("exist", true, "Please type in numbers to check if exsit or not");
opts.addOption("quit", false, "Leave");
BasicParser parser = new BasicParser();
CommandLine cl = parser.parse(opts, args);
//the help information
HelpFormatter hf = new HelpFormatter();
hf.printHelp("OptionsTip", opts);
} catch (ParseException pe) {
pe.printStackTrace();
}
在命令行显示是如下
4. 读取命令行
读取命令行可以很简单的时候Scanner来操作
Scanner scanner = new Scanner(new InputStreamReader(System.in));
String str1 = scanner.nextLine();
读取一行,之后下一行。如果需要对读取到的string进行操作,建议给出固定的间隔符,比如空格,然后就可以简单的使用split对string进行分割从而得到list。
String[] array1 = str1.split("\\s+");
希望本文对你有帮助。欢迎留言交流。