【发布时间】:2021-01-14 15:36:16
【问题描述】:
我正在开发一个程序public class Talk,它以两种方式通信连接客户端和服务器。我将使用终端窗口运行程序。如何添加命令行选项以使它们工作Talk –h [hostname | IPaddress] [–p portnumber],或Talk –s [–p portnumber],或Talk –a [hostname|IPaddress] [–p portnumber],或Talk –help
这是我目前所拥有的:
if (args[0] == "-h" && args[2] == "-p" && (Integer.parseInt(args[3]) % 1 == 0)) {
// code for Talk –h [hostname | IPaddress] [–p portnumber]
} else if (args[0] == "-s" && args[1] == "-p" && (Integer.parseInt(args[2]) % 1 == 0)) {
// code for Talk –s [–p portnumber]
} else if (args[0] == "-a" && args[2] == "-p" && (Integer.parseInt(args[3]) % 1 == 0)) {
// code for Talk –a [hostname|IPaddress] [–p portnumber]
} else if (args[0] == "-help") {
// code for Talk –help
} else {
System.out.println("Invalid invocation, use -help for instructions on how to use program");
System.exit(-1);
}
这是添加命令行选项的正确方法吗?以及它们的限制条件?
【问题讨论】:
-
看起来不错。
Integer.parseInt(args[3]) % 1 == 0周围不需要括号。 -
parseInt返回的 That's not how to compare Strings in Java 和 all 值满足%1==0但它们中的大多数不是有效的端口号(至少对于 TCP 和 UDP,您没有不说)。此外,使用消息中的[]通常表示 optional 即可以省略但您不允许这样做。此外,否定的进程退出代码通常不起作用。
标签: java command-line terminal command-line-arguments