为了好玩,我编写了一个小型 Java 应用程序,一切运行良好。我的问题是,当我在研究解析命令行参数的方法时,我只是觉得应该有一种更有效的方法。我的程序接受:
-l I(I 是新下界的整数) -u I(I 是新上界的整数) -? (输出可用的命令行选项)-v(激活主类的详细输出)
我通过以下方式实现了我的 parseArgs 方法:
private static void parseArgs(String[] arguments) {
String t = "";
for (int c = 0; c < arguments.length; c++) t += arguments[c];
if (t.contains("-")) {
String[] params = t.split("-");
for (int c = 0; c < params.length; c++) params[c] = params[c].trim();
for (int c = 0; c < params.length; c++) {
if (params[c].startsWith("?") && !docOnly) {
docOnly = true;
printHelp();
}
if (params[c].startsWith("l") && startPoint == 1) {
try {
startPoint = Integer.parseInt(params[c].substring(1));
if (startPoint < 0) {
startPoint = 0;
}
} catch (NumberFormatException e) {
error = true;
System.out.println("\tParameter Error: " + params[c]);
}
}
if (params[c].startsWith("u") && endPoint == 1000) {
try {
endPoint = Integer.parseInt(params[c].substring(1));
if (endPoint < 0) {
endPoint = 1000;
}
} catch (NumberFormatException e) {
error = true;
System.out.println("\tParameter Error: " + params[c]);
}
}
if (params[c].startsWith("v") && !verbose) {
verbose = true;
}
}
} else {
error = true;
System.out.println("\tError in Parameters. Use -? for available options.");
}
}
正如我所说,我的代码一切正常,如果您想验证,可以查看它。我只是好奇其他程序员,无论是否专业,将如何处理传递可变数量和参数顺序的情况,并拥有一个可以准确解析它们的有效代码路径。我知道我的不是最好的,这就是为什么我想知道。任何语言都可以回答,我只是对程序感到好奇。我可以适应任何必要的语言,以便从中学习更多。
提前致谢。〜大卫柯林斯