たとえば、ユーザーは私のプログラムを次のように実行します
myprogram -p1 my_name, -p2 my_address, -p3 my_gender
ただし、ユーザーはこれを入力しても有効です。
myprogram -p2 my_address, -p1 my_name,-p3 my_gender
Javaでどのように解析できますか? ありがとう。
たとえば、ユーザーは私のプログラムを次のように実行します
myprogram -p1 my_name, -p2 my_address, -p3 my_gender
ただし、ユーザーはこれを入力しても有効です。
myprogram -p2 my_address, -p1 my_name,-p3 my_gender
Javaでどのように解析できますか? ありがとう。
次のようなものを使用できます。
public static void main (String[] args) {
for(int i = 0; i < args.length; i++) {
if(args[i].equals("-p1")) {
// args[i+1] contains p1 argument
} else if(args[i].equals("-p2")) {
// args[i+1] contains p2 argument
}
}
}
i+1 引数があるかどうかを確認してください。そうでない場合、例外がスローされます。
これを行うためのより高度な方法があります。たとえば、ハッシュを使用してフラグを処理関数にマップできます。しかし、この目的のためには、これで十分だと思います。
私が理解していないのは、サンプルでのコンマの使用です。それらは何に使用されますか?
DIYを探しているなら、おそらくこれが出発点かもしれません。
public class Foo
{
private static final String[] acceptedArgs = { "-p1", "-p2", "-p3" };
public void handleCommandArgs(String... args)
{
if (args != null)
{
for (int argIndex = 0; argIndex < args.length; argIndex++)
{
for (int acceptedIndex = 0; acceptedIndex < acceptedArgs.length; acceptedIndex++)
{
if (args[argIndex] != null && args[argIndex].equals(acceptedArgs[acceptedIndex]))
{
String arg = args[argIndex], param = args[argIndex + 1];
performRoutine(arg, param);
}
}
}
}
}
private void performRoutine(String arg, String param)
{
System.out.println(arg + " ->" + param.replace(",", ""));
}
public static void main(String[] args)
{
(new Foo()).handleCommandArgs(args);
}
}
public static void main (String[] args) {
for (String s: args) {
System.out.println(s);
}
}
パラメータは文字列のベクトルで提供されます。