我需要连接两个命令行参数。用户应该放置-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?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
你的逻辑存在缺陷;这就是为什么它不起作用。如果我使用以下参数java classname -input input.txt -output output.txt
运行程序,那么您的代码将从终端输入并输出到output.txt。
更新 - 实际上它会因NullPointerException而崩溃