2017-02-11 3 views
-3

Mein Lehrer möchte so etwas wie "Java-Methoden -r fact 3" ausführen, um die Ergebnisse einer faktoriellen 3 zu erhalten und in der Lage sein, -r in -d zu ändern das Ergebnis statt nur das Ergebnis.Setzen Sie Flags zu Methoden auf Java

Ich kann nicht finden, wie die -r oder -d zu jeder Klasse "zuweisen" oder was ist der Name davon. Kann mir bitte jemand helfen? Ich bin neu in all dem.

+0

dh. Kommandozeilenargumente? https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html –

+0

Ja, so ähnlich. Also habe ich zwei Klassen, zum Beispiel faktoriell und faktoriald, wie würde ich "-r" faktoriell und -d faktoriald laufen lassen? – Abby

Antwort

0

Das args Array der main-Methode enthält die Befehlszeilenargumente. Die -r oder -d wird auf Position 0 von args sein. Sie möchten etwas in der Art:

public static class CalculateFactorials { 
    public static void main(String[] args) { 
     if (args[0].equals("-r")) { 
      factorial(); 
     } 
     else if (args[0].equals("-d")) { 
      factoriald(); 
     } 
    } 
    public static void factorial() { 
     //calculate factorial 
    } 
    public static void factoriald() { 
     //calculate factorial while showing process 
    } 
} 
+0

Perfekt, danke! Damit dies funktioniert, müssen faktorielle und faktorielle Daten in derselben Datei gespeichert sein, oder? Ich habe sie auf separaten, aber ich glaube, ich kann beide Methoden einfach kopieren und einfügen. – Abby

+0

Ja, aber Sie müssen sie nicht in der gleichen Datei haben. Wenn es sich um zwei verschiedene Klassendateien handelt, können Sie entweder die Objekte erstellen und die entsprechende Methode über 'object.method()' aufrufen. Wenn es sich bei den Methoden um statische Methoden handelt, können Sie sie aufrufen, ohne Objekte zu erstellen, wie 'ClassName.staticMethod() '. – badjr

+0

Danke, ich habe versucht zu schreiben: 'if (args [0] .equals (" - r ") && args [1] .equals (" Tatsache ")) { fact(); ' aber es sagt" Methodenaufruf erwartet "in der Faktenzeile. Ich habe versucht, den Faktencode unten zu kopieren, aber es hat nicht funktioniert. Ich habe auch versucht, 'fact.staticMethod(); 'und es kann statische Methode nicht lösen, ich bin mir nicht sicher, ob ich alles falsch mache. – Abby

Verwandte Themen