2016-07-30 3 views
0

Ich löse eine Frage, wo die Anforderung ist, dass das Programm dem Benutzer ermöglichen sollte, einen Parameter mit der Befehlszeilenoption -d festzulegen. Bietet Java einen Mechanismus, um Argumente mit der Option -d zu übergeben? Ich konnte keine finden, also interpretiere ich das so, als wäre der Wert der Befehlszeilenoption -d, dh der Benutzer möchte den Parameter als nächstes eingeben.Übergabe der Option -d in Java

if (args[0].equals("-d")) 
{ 
    parameter = args[0]; 
} 

Ist dies der richtige Weg, um das zu überprüfen? Gibt es eine bessere Möglichkeit zu überprüfen, ob der Benutzer die Option -d eingegeben hat? Bietet Java einen anderen Mechanismus dafür?

+0

Verwenden Sie einen Befehlszeilenargumentparser. [JCommander] (http://jcommander.org/) (keine Zugehörigkeit) ist meine Präferenz - es gibt andere. –

+0

Dann 'parameter =" -d "' oder 'null' - ist das was du willst? Schauen Sie sich zum Beispiel Apache Commons CLI an. und http://stackoverflow.com/questions/10745811/how-to-use-terminals-arguments-with-values-in-java –

Antwort

1

Was passiert, wenn jemand das Programm mit ./yourapp something else -d ausführt? Jetzt ist das Argument -d vorhanden, aber nicht auf Position 0

Also, meine Empfehlung ist es, durch alle Argumente zu durchlaufen und zu überprüfen, was Sie brauchen.

int i; 
boolean dParam = false; 
for (i = 0; i < args.length; i++) { 
    if (args[i].equals("-d")) { 
     dParam = true; 
    } 
} 

Wenn Sie den Benutzer zur Eingabe etwas nach dem -d wollen, wie ein Dateiname dann würde ich empfehlen, dies zu tun:

int i; 
boolean dParam = false; 
String dParamValue; 

for (i = 0; i < args.length; i++) { 
    if (args[i].equals("-d")) { 
     dParam = true; 
     dParamValue = args[++i]; 
    } 
} 
+0

Das fängt an, viel wie ein Rad neu zu erfinden. Dein ist bestenfalls etwas quadratisch ... –

+0

Es ist nicht das Rad neu erfinden. Es ist eine aktualisierte Version des ursprünglichen OP-Codes, der funktioniert. – Ibrahim

0

Alle Parameter, die Sie an das Programm übergeben Sie laufen, gehen, in der Anwendung throug die Parameter String [] args im Hauptverfahren ..

können Sie dann prüfen, ob das Wörterbuch aus, nur um die Überprüfung angefordert wird, wenn das Array von Argumenten, die Schlüssel enthält ..

Beispiel:

public static void main(String[] args) { 
System.out.println("is dictionary there?: " + Arrays.asList(args).contains("d")); 

if (Arrays.asList(args).contains("d")) { 
    prepateDictionary(); 
}else { 
    prepareSomethingElse(); 
} 

} 
1

Ich denke, die Anforderung bedeutet -D (Hauptstadt eins), nicht -d. Diese Optionen werden verwendet, um zusätzliche Parameter an Java zu übergeben. Zum Beispiel -Dmy.option=value. In diesem Fall haben Sie Zugriff auf diese Eigenschaft mittels System Klasse:

String myOption = System.getProperty("my.option"); 
Verwandte Themen