18 Stimmen

Das Problem des * im Befehlszeilenargument

Ich habe ein Programm in Java geschrieben, das Eingaben über Befehlszeilenargumente entgegennimmt. Ich erhalte eine Eingabe von zwei Zahlen und einem Operator von der Kommandozeile. Um zwei Zahlen zu multiplizieren, muss ich eine Eingabe machen wie z.B. 5 3 * aber es funktioniert nicht wie geschrieben.

Warum akzeptiert sie nicht die * über die Befehlszeile?

0voto

wbkang Punkte 1976

In Erweiterung der Antwort von @Arno Unkrig:

Unter Windows expandieren einige JVMs definitiv das "*"-Zeichen, und es ist nicht die Shell, die den Pfad expandiert. Sie können dies bestätigen, indem Sie ein kleines Java-Programm schreiben, das die Argumente ausgibt:

public class TestArgs {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("Arg " + i + ": " + args[i]);
        }
    }
}

Die gute Nachricht ist, dass es eine Abhilfe gibt! Sie können verwenden @filename als Argument für JVM wie folgt:

java @args.txt wobei args.txt ist eine Textdatei, die die Argumente für jede Zeile enthält. Beispiel Inhalt:

TestArgs
*

Dies ist gleichbedeutend mit dem Aufruf von java mit zwei Argumenten TestArgs y * . Das Wichtigste, * wird nicht erweitert, wenn es mit der Option @filename Methode. Ich konnte die Details finden unter diese Seite .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X