2017-07-25 3 views
1

Ich möchte ein Java-Programm machen, in dem ich einen String als Eingabe nehmen möchte. Die Zeichenfolge hat zwei ganze Zahlen und eine auszuführende Operation. z. 25 + 85 oder 15 * 78Wie wird der String geteilt, wenn das Zeichen dynamisch oder unbekannt ist?

Die Ausgabe wird die Lösung des Strings.

Aber ich weiß nicht, wie die Zeichenfolge zu spalten, weil Operator Zeichen nicht vor der Ausführung bekannt ist.

+0

https://stackoverflow.com/questions/7138038/commandline-java-calculator –

+2

Split verwendet reguläre Ausdrücke, so einfach 'input.split (" [+ * \\ - \\ /] ")' wird die 4 grundlegende Operationen. – Michael

+0

Warum verwenden Sie nicht eine JavaScript-Lösung für diese, Java haben Javascript in sich, Sie können den folgenden Code verwenden, um eine Zeichenfolge für mathematische Operationen auszuwerten. ---------- 'ScriptEngineManager Manager = new ScriptEngineManager(); ScriptEngine-Engine = manager.getEngineByName ("js"); Objekt result = engine.eval („4 * 5“); ' – Muhammad

Antwort

0

würden Sie möchten überprüfen, welche Operation es mithilfe String.contains("+"); und Überprüfung alle anderen Operatoren, die Sie unterstützen möchten verwendet. Dann teilen Sie sich, wo immer dieser Operator ist, String.split("+"). Von dort analysieren Sie die Ausgabe von String.split("+") mit Integer.parseInt(String s) und geben Sie dann die Summe zurück. Ziemlich einfach, viel Glück.

0

können Sie die split() Methode der String-Klasse verwenden, um die Eingabe an nicht-nummerische Zeichen aufzuspalten:

input.split("\\D"); 

Dieses Sie ein Array nur die Zahlen enthalten, geben wird. Ich denke, Sie wollen auch irgendwie den Operator bekommen? Obwohl es nicht die eleganteste Methode ist, möchten Sie vielleicht mit input.replaceAll("[^\\*\\+\\-\\/]", "") beginnen, um alles zu entfernen, was kein Operator ist, aber Sie müssen dennoch einige sorgfältige Eingabefilterungen vornehmen. Was passiert, wenn ich 5+4*6 oder 2+hello eintippe?

Verwandte Themen