2009-04-04 11 views

Répondre

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

Votre méthode main a comme argument String[]. Cela contient les arguments qui ont été passés à vos applications (il est souvent appelé args, mais ce n'est pas une exigence).

5

arguments de ligne de commande sont transmis dans le premier paramètre String[] à main(), par exemple,

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

Dans l'exemple ci-dessus, args contient tous les arguments de ligne de commande.

La réponse courte, douce à la question posée est la suivante:

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

arguments de ligne de commande sont accessibles via String[] args paramètre de la méthode main.

Pour le premier argument, vous pouvez vérifier args[0]

code entier ressemblerait

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

programme Java Chaque commence par

public static void main(String[] args) { 

Ce tableau de type String qui main() prend comme paramètre contient les arguments de la ligne de commande pour votre programme. Si l'utilisateur exécute votre programme

$ java myProgram a 

puis args[0] tiendra la chaîne « a ».

0

Comme tout le monde l'a dit ... la méthode .equals est ce dont vous avez besoin.

Au large vous hasard utilisé quelque chose comme:

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

alors il ne fonctionne pas parce que == compare l'emplacement des deux objets (égalité physique) plutôt que le contenu (l'égalité logique).

Puisque "a" de la ligne de commande et "a" dans la source de votre programme sont alloués dans deux endroits différents, le == ne peut pas être utilisé. Vous devez utiliser la méthode equals qui vérifie que les deux chaînes ont les mêmes caractères.

Une autre note ... "a" == "a" fonctionnera dans de nombreux cas, car les chaînes sont spéciales en Java, mais 99,99999999999999% du temps que vous voulez utiliser .equals.

37

Utilisez le apache commons cli si vous envisagez d'étendre ce paramètre au-delà d'un seul argument. La bibliothèque Apache Commons CLI fournit une API permettant d'analyser les options de ligne de commande transmises aux programmes, ainsi que des messages d'aide détaillant les options disponibles pour un outil de ligne de commande."

Commons CLI prend en charge différents types d'options:

  • Posix comme les options (.-À-dire le goudron -zxvf foo.tar.gz)
  • GNU comme des options à long (par exemple du --human lisible. --max profondeur = 1)
  • Java comme des propriétés (ie. java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
  • courtes avec des options de valeur attachée (ie. -O2 gcc foo.c)
  • options longues avec trait d'union simple (par exemple, ant -projec thelp)
1

Essayez de passer la valeur a et comparer en utilisant la méthode equals comme ceci:

public static void main(String str[]) { 

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

    System.out.println(b); 

} 

Suivez ce lien pour en savoir plus sur Command line argument in Java

+0

Ce n'est pas un 'null' sûr ... – Samoth

0

arguments de ligne de commande sont stockés sous forme de chaînes dans la String tableau String[] args that is passed to principal() `.

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

arguments de ligne de commande sont les entrées qui acceptent de l'invite de commande lors de l'exécution du programme. Les arguments passés peuvent être n'importe quoi. Ce qui est stocké dans le tableau 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]); 
    } 
    } 

Exemple:

java Argdemo one two 

La sortie sera: [? Comment analyser les arguments de ligne de commande en Java]

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

Dans votre exemple, que signifie la première ligne 'javastack.java.' ? Je ne sais pas exactement ce que le 'It' dans' Il est utilisé pour accepter l'entrée de l'invite de commande lors de l'exécution du programme. »Fait référence à, mais la séquence est 1) parse commande 2) paramètres d'installation 3) exécuter le programme. Je ne sais pas avec certitude ce que 'This' dans' Cela accélère essentiellement l'exécution du programme quand le programme dépend de l'entrée de l'utilisateur. ', Mais il n'y a rien dans _parameter passing_ pour accélérer le programme execution_. – greybeard