2009-04-04 48 views

Respuesta

31
public class YourClass { 
    public static void main(String[] args) { 
     if (args.length > 0 && args[0].equals("a")){ 
      //... 
     } 
    } 
} 
1

Su método main tiene un argumento String[]. Que contienen los argumentos que se han pasado a sus aplicaciones (a menudo se llama args, pero eso no es un requisito).

5

argumentos de línea de comandos se pasan en la primera String[] parámetro para main(), por ejemplo

public static void main(String[] args) { 
} 

En el ejemplo anterior, args contiene todos los argumentos de línea de comandos.

El corto, dulce respuesta a la pregunta planteada es: argumentos de la línea

public static void main(String[] args) { 
    if(args.length > 0 && args[0].equals("a")) { 
     // first argument is "a" 
    } else { 
     // oh noes!? 
    } 
} 
2

comandos son accesibles a través de parámetros de String[] argsmain método.

Para el primer argumento se puede comprobar args[0]

código completo se vería como

public static void main(String[] args) { 
    if ("a".equals(args[0])) { 
     // do something 
    } 
} 
programa
15

Cada Java comienza con

public static void main(String[] args) { 

Esa matriz de tipo String que main() toma como parámetro mantiene los argumentos de línea de comando para su programa. Si el usuario ejecuta su programa como

$ java myProgram a 

continuación args[0] llevará a cabo la cadena "a".

0

Como todos han dicho ... el método .equals es lo que necesita.

En la oportunidad fuera que utilizó algo como:

if(argv[0] == "a") 

entonces no funciona porque == compara la ubicación de los dos objetos (igualdad física) en lugar de los contenidos (igualdad lógica).

Desde "a" de la línea de comandos y "a" en la fuente de su programa se asignan en dos lugares diferentes del == no se puede utilizar. Debe usar el método equals que verificará que ambas cadenas tengan los mismos caracteres.

Otra nota ... "a" == "a" funcionará en muchos casos, porque las cadenas son especiales en Java, pero 99.99999999999999% del tiempo que desea utilizar .equals.

37

Usa el apache commons cli si planeas extender eso más allá de una sola arg.

"La biblioteca Apache Commons CLI proporciona una API para analizar las opciones de línea de comando pasadas a los programas. También puede imprimir mensajes de ayuda que detallan las opciones disponibles para una herramienta de línea de comandos."

Commons CLI compatible con diferentes tipos de opciones:

  • POSIX como opciones (. Es decir, el alquitrán -zxvf coco.tar.gz)
  • GNU como las opciones largas (es decir du --human legible. --max profundidad = 1)
  • Java como propiedades (es decir. java -Djava.awt.headless = true -Djava.net.useSystemProxies = true foo)
  • opciones cortos con valor unidos (es decir. -O2 gcc foo.c)
  • opciones largas con un solo guión (es decir, ant -projec thelp)
1

tratan de pasar el valor de una y comparar usando el método equals así:

public static void main(String str[]) { 

    boolean b = str[0].equals("a"); 

    System.out.println(b); 

} 

Siga este enlace para saber más sobre Command line argument in Java

+0

Esto no es 'nulo'-seguro ... – Samoth

0

argumentos de línea de comandos se almacenan como cadenas en el String matriz String[] args that is passed to main() `.

java [program name] [arg1,arg2 ,..] 

Los argumentos de línea de comandos son las entradas que se aceptan desde el símbolo del sistema al ejecutar el programa. Los argumentos aprobados pueden ser cualquier cosa. Que se almacena en la matriz args[].

//Display all command line information 
     class ArgDemo{ 
      public static void main(String args[]){ 
      System.out.println("there are "+args.length+"command-line arguments."); 
      for(int i=0;i<args.length;i++) 
      System.out.println("args["+i+"]:"+args[i]); 
    } 
    } 

Ejemplo:

java Argdemo one two 

La salida será: [? Cómo analizar los argumentos de línea de comandos en Java]

there are 2 command line arguments: 
they are: 
arg[0]:one 
arg[1]:two 
+0

En su ejemplo, ¿qué significa la primera línea' javastack.java' ? No estoy seguro de qué se refiera al 'It' en' Se usa para aceptar entrada desde el símbolo del sistema mientras se ejecuta el programa', pero la secuencia es 1) comando de análisis 2) parámetros de configuración 3) ejecutar programa. No sé con certeza qué se refiere al 'Esto' en' Esto básicamente acelera la ejecución del programa cuando el programa depende de la entrada del usuario., Pero no hay nada en el parámetro _ que apruebe _acelere la ejecución del programa_. – greybeard

Cuestiones relacionadas