wake-up-neo.com

Java-Befehlszeilenargumente

Ich versuche herauszufinden, ob das 'a' als erstes String-Argument eingegeben wurde. 

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

Verwenden Sie das Apache commons cli , wenn Sie vorhaben, das Argument über ein einzelnes Argument hinaus zu erweitern.

"Die CLI-Bibliothek von Apache Commons bietet eine API zum Analysieren von Befehlszeilenoptionen, die an Programme übergeben werden. Außerdem können Hilfemeldungen gedruckt werden, die die für ein Befehlszeilenprogramm verfügbaren Optionen anzeigen."

Commons CLI unterstützt verschiedene Arten von Optionen:

  • POSIX-ähnliche Optionen (z. B. tar -zxvf foo.tar.gz)
  • GNU wie lange Optionen (z. B. du --human-readable --max-depth = 1)
  • Java ähnliche Eigenschaften (dh Java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
  • Kurze Optionen mit angehängtem Wert (z. B. gcc -O2 foo.c)
  • lange Optionen mit einem einfachen Bindestrich (z. B. Ant-Projekthilfe)
38
John Ellinwood

Jedes Java-Programm beginnt mit

public static void main(String[] args) {

Dieses Array vom Typ String, das main() als Parameter verwendet, enthält die Befehlszeilenargumente für Ihr Programm. Wenn der Benutzer Ihr Programm als ausführt

$ Java myProgram a

dann wird args[0] den String "a" enthalten.

17
Bill the Lizard

Befehlszeilenargumente werden im ersten String[]-Parameter an main() übergeben, z.

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

Im obigen Beispiel enthält args alle Befehlszeilenargumente.

Die kurze, süße Antwort auf die gestellte Frage lautet:

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

Befehlszeilenargumente sind über den String[] args-Parameter der main-Methode zugänglich.

Als erstes Argument können Sie args[0] überprüfen.

der gesamte Code würde aussehen

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

Ihre main-Methode hat ein String[]-Argument. Das enthält die Argumente, die an Ihre Anwendungen übergeben wurden (häufig als args bezeichnet, dies ist jedoch keine Voraussetzung). 

1
Joachim Sauer

Versuchen Sie, den Wert a zu übergeben und vergleichen Sie die Equals-Methode wie folgt:

public static void main(String str[]) {

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

    System.out.println(b);

}

Folgen Sie diesem Link, um mehr über Befehlszeilenargument in Java zu erfahren

1
user2885596

Wie alle anderen gesagt haben ... ist die .equals-Methode das, was Sie brauchen. 

In der Off-Chance haben Sie so etwas verwendet:

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

dann funktioniert es nicht, weil == den Ort der beiden Objekte (physische Gleichheit) und nicht den Inhalt (logische Gleichheit) vergleicht.

Da "a" von der Befehlszeile und "a" in der Quelle für Ihr Programm an zwei verschiedenen Stellen zugewiesen werden, kann == nicht verwendet werden. Sie müssen die Methode equals verwenden, die überprüft, ob beide Zeichenfolgen die gleichen Zeichen haben.

Ein weiterer Hinweis ... "a" == "a" funktioniert in vielen Fällen, da Strings in Java speziell sind, aber 99,99999999999999% der Zeit, in der Sie .equals verwenden möchten.

0
TofuBeer

Befehlszeilenargumente werden als Zeichenfolgen im String-Array String[] args that is passed tomain () `gespeichert.

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

Befehlszeilenargumente sind die Eingaben, die während der Ausführung des Programms von der Eingabeaufforderung akzeptiert werden. Die übergebenen Argumente können alles sein. Welches ist im args[]-Array gespeichert.

//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]);
    }
    }

Beispiel:

Java Argdemo one two

Die Ausgabe wird sein:

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