Code Test

一家大公司面试到最后一轮,给了两小时的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+");




希望本文对你有帮助。欢迎留言交流。


07-10 1354
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值