Analizador de línea de comando Apache

Obtuve el código a continuación de un código de muestra desde el punto de tutoriales y lo ajusté un poco.

App.java

public static void main(String[] args) throws ParseException {
        CommandTest t = new CommandTest();
        t.start(args);
}

CommandTest.java

public class CommandTest {

    void start(String[] args) throws ParseException {

          //***Definition Stage***
          // create Options object
          Options options = new Options();

          // add option "-a"
          options.addOption(
                    Option.builder("a")
                        .longOpt("add")
                        .desc("add numbers")
                        .hasArg(false)
                        .valueSeparator('=')
                        .required(false)
                        .build()
                  );

          // add option "-m"
          options.addOption("m", false, "");
          options.addOption(
                    Option.builder("m")
                        .longOpt("multiply")
                        .desc("multiply numbers")
                        .hasArg(false)
                        .valueSeparator('=')
                        .required(false)
                        .build()
                  );

          //***Parsing Stage***
          //Create a parser
          CommandLineParser parser = new DefaultParser();

          //parse the options passed as command line arguments
          CommandLine cmd = parser.parse( options, args);

          //***Interrogation Stage***
          //hasOptions checks if option is present or not
          if(cmd.hasOption("a")) { 
             System.out.println("Sum of the numbers: " + getSum(args));
          } else if(cmd.hasOption("m")) {
             System.out.println("Multiplication of the numbers: " + getMultiplication(args));
          }
       }

       public static int getSum(String[] args) {
          int sum = 0;
          for(int i = 1; i < args.length ; i++) {
             sum += Integer.parseInt(args[i]);
          } 
          return sum;
       }

       public static int getMultiplication(String[] args) {
          int multiplication = 1;
          for(int i = 1; i < args.length ; i++) {
             multiplication *= Integer.parseInt(args[i]);
          } 
          return multiplication;
       }
}

Ahora, mi pregunta es que, cuando intente ejecutar el código anterior con un parámetro -multi, ¿aún se aceptará? Ya he configurado las opciones para recibir solo uno -mo -multiply. Sin embargo, todavía aceptará-multi

Estoy usando commons-cli-1.3.1 (por cierto, estoy tratando de depurar un código heredado)

Nota: La fuente anterior es solo una fuente de MUESTRA, no es necesario aplicar pautas de codificación reales (buenas o malas), solo quiero saber por qué el comportamiento ocurre tal como es.

Respuesta 1

Tengo la función A, la función B y la función C Estoy tratando de llamar a una de estas funciones al azar (A o B o C) desde Main. ¿Cómo puedo hacerlo? ¿Puedo poner las funciones en una lista de arrays llamada ...

Necesito selectores de fecha para dos casos, hasta ahora siempre he usado JXDatePicker, pero eso no es lo que necesito ahora: quiero un selector de fecha especialmente para las semanas del año y otro para meses de ...

Dado el siguiente Mapa ("DIAMANTE" -> "DAYMAHND", "MIL" -> "THAWZAHND"), quiero tomar el valor de cada elemento en el mapa actual y actualizar esos valores en un nuevo mapa con la última vocal y cada ...

Quiero iniciar sesión programáticamente (usando Java) en un sitio. (Ya tiene nombre de usuario y contraseña) Tome este sitio por ejemplo: http: //mediaforest-argentina.com/Membership/login.aspx? ReturnUrl =% 2fGuests% ...