1

我需要连接两个命令行参数。用户应该输入-input“filename.txt”和/或-output“filename.txt”,但我似乎无法将-input-output部分与文件名连接起来。

因此,例如,用户可以输入以下任何内容:

java classname
java classname -input filename.txt
java classname -output filename.txt
java classname -input filename.txt -output filename.txt
java classname -output filename.txt -input filename.txt

我试过这个:

        for(int i = 0; i < args.length; i++){
        if(args[i].equals("-input")){
            input = args[i + 1];
        }
        else{
            //input from terminal
        }

        if(args[i].equals("-output")){
            output = args[i + 1];
        }
        else{
            //output to terminal
        }

但它不起作用,而且看起来不优雅。我一直在研究 Apache Commons CLI,但我似乎无法弄清楚它是如何工作的以及是否有适用的功能。使用 Apache 的东西或其他方式有什么方法可以将 -input 连接到 filename.txt?

4

2 回答 2

1

这应该工作

public static void main(String[] args) {
    String input = findArg("input", args);
    String output = findArg("output", args);
}

static String findArg(String name, String[] args) {
    for (int i = 0; i < args.length; i += 2) {
        if (args[i].equals("-" + name)) {
            return args[i + 1];
        }
    }
    return null;
}
于 2013-02-24T04:26:31.143 回答
0

你的逻辑有缺陷;这就是为什么它不起作用。如果我使用以下参数运行程序,java classname -input input.txt -output output.txt那么您的代码将从终端获取输入并输出到 output.txt。

更新 - 实际上它会因 NullPointerException 而崩溃

于 2013-02-24T04:27:28.627 回答