2016-10-19 6 views
-3

In Java versuche ich ein Befehlszeilenargument der Form "-p3" einzulesen. Zum Beispiel würde "-p3" mir zwei Informationen mitteilen. "p" würde den Typ der Variablen unterscheiden, sagen wir "Leute". "3" würde unterscheiden, wie viele der Variablen die Variable instanziieren. Also sagt "-p3" in der Befehlszeile unseres Programms, dass wir drei Leute haben.Java - Befehlszeile Analysieren eines Variablennamens mit Wert

Ich bin verwirrt, wie man das "p" von der "3" trennt. Es gibt kein Zeichen wie ein Komma, um .split() zu verwenden.

Irgendwelche Vorschläge?

... 
String firstArgument = args[0]; 
if(firstArgument.charAt(1)=='P') { 
    int amount=Character.getNumericValue(firstArgument.charAt(2)); 
    for (int i=0; i<amount;i++){ 
    //Initialize valid object and maybe saving it in an list/array 
    ... 
    } 
} 
... 
+1

Werfen Sie einen Blick auf die anderen Methoden, die '' String'' bietet. – f1sh

+0

Verwenden Sie entweder eine dedizierte Bibliothek zum Parsen der Befehlszeile (Google ist Ihr Freund) oder trennen Sie sie nach dem ersten Zeichen. –

+0

vielleicht Apache Commons-CLI kann Ihren Schmerz lindern .... https://commons.apache.org/cli/ –

Antwort

0

Man könnte so etwas tun. Lassen Sie uns konstruktiv darüber sein:

final String peopleArg = "-p"; 
    for (String arg : args) { 
     if (arg.startsWith(peopleArg)) { 
      String numberAsString = peopleArg.substring(peopleArg.length()); 
      try { 
       int noOfPeople = Integer.parseInt(numberAsString); 
       if (noOfPeople > 0) { 
        createPeople(noOfPeople); 
       } else { 
        System.err.println("Incorrect number of people to create: " + numberAsString); 
       } 
      } catch (NumberFormatException nfe) { 
       System.err.println("Incorrect number of people to create: " + numberAsString); 
      } 
     } 
    } 
+0

Sie möchten eine bessere Validierung der Eingabe machen. Ich glaube, das obige Argument mit arg '-p10' wird 1 ergeben, mit arg' Spot' wird es Ihr Programm mit einer 'NumberFormatException' zum Absturz bringen (vorausgesetzt, Sie verwenden ein kleines p wie in der Frage). –

+0

Ich lag falsch, 'Spot' wird nicht abstürzen. "hoch" wird. –

+0

Wie Sie in meiner Antwort sehen können, wird der vorherige Code weggelassen, wie durch "..." angezeigt. Mir ist sehr bewusst, dass dies keine 100% kugelsichere Antwort ist. Es sollte nur als eine Idee für den Fragesteller funktionieren;) –

0

Es ist leicht zu kritisieren (wie ich in einem Kommentar auf die andere Antwort hat):

Verwandte Themen