web-dev-qa-db-fra.com

Arguments de ligne de commande Java

J'essaie de détecter si le «a» a été entré comme premier argument de chaîne. 

23
burntsugar
public class YourClass {
    public static void main(String[] args) {
        if (args.length > 0 && args[0].equals("a")){
            //...
        }
    }
}
35
Björn

Utilisez le Apache commons cli si vous envisagez de prolonger cette argumentation au-delà d’un argument.

"La bibliothèque CLI d'Apache Commons fournit une API permettant d'analyser les options de ligne de commande transmises aux programmes. Elle est également capable d'imprimer 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:

  • Options similaires à POSIX (c'est-à-dire tar -zxvf foo.tar.gz)
  • GNU comme options longues (c'est-à-dire du --human-readable --max-depth = 1)
  • Propriétés similaires à Java (c.-à-d. Java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
  • Options courtes avec une valeur attachée (par exemple, gcc -O2 foo.c)
  • options longues avec un trait d'union (c'est-à-dire ant -projecthelp)
38
John Ellinwood

Chaque programme Java commence par

public static void main(String[] args) {

Ce tableau de type String que main() prend en paramètre contient les arguments de ligne de commande de votre programme. Si l'utilisateur exécute votre programme en tant que

$ Java myProgram a

alors args[0] tiendra la chaîne "a".

17
Bill the Lizard

Les arguments de ligne de commande sont passés 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 la ligne de commande.

La réponse courte et 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!?
    }
}
5
Rob

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

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

le code entier ressemblerait

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

Votre méthode main a un argument String[]. Cela contient les arguments qui ont été transmis à vos applications (elle s'appelle souvent args, mais ce n'est pas une obligation). 

1
Joachim Sauer

Essayez de passer la valeur a et de 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 Argument de ligne de commande en Java

1
user2885596

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

Vous avez utilisé par hasard quelque chose comme:

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

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

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

Une autre remarque ... "a" == "a" fonctionnera dans de nombreux cas, car les chaînes sont spéciales en Java, mais 99,99999999999999% des fois que vous souhaitez utiliser .equals.

0
TofuBeer

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

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

Les arguments de ligne de commande sont les entrées qui acceptent à partir de la commande Invite lors de l'exécution du programme. Les arguments passés peuvent être n'importe quoi. 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:

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