0

たとえば、ユーザーは私のプログラムを次のように実行します

myprogram -p1 my_name, -p2 my_address, -p3 my_gender

ただし、ユーザーはこれを入力しても有効です。

myprogram -p2 my_address, -p1 my_name,-p3 my_gender

Javaでどのように解析できますか? ありがとう。

4

3 に答える 3

1

次のようなものを使用できます。

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 引数があるかどうかを確認してください。そうでない場合、例外がスローされます。

これを行うためのより高度な方法があります。たとえば、ハッシュを使用してフラグを処理関数にマップできます。しかし、この目的のためには、これで十分だと思います。

私が理解していないのは、サンプルでのコンマの使用です。それらは何に使用されますか?

于 2012-04-18T10:40:37.730 に答える
0

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);
  }
}
于 2012-04-18T11:16:09.530 に答える
-3

Java チュートリアル @Oracle のサンプル

public static void main (String[] args) {
    for (String s: args) {
        System.out.println(s);
    }
}

パラメータは文字列のベクトルで提供されます。

于 2012-04-18T10:07:46.083 に答える