Java Taschenrechner
lima-city → Forum → Programmiersprachen → Java
ausgabe
backend private double
beschreiben
code
double
eingabe
eingegebene zahl
entfernen
ergebnis
faktor
formel
import
operator
private string
problem
rundung
schlauch
stellen
string
system
-
Moin Moin,
ich will/muss in Java einen Taschenrechner programieren.
Insgesamt läuft das auch schon alles relativ rund, allerdings habe ich jetzt ein Problem. Ansich sollte der Rechner ursprünglich zwei Anzeigen haben (Eingabe & Ergebnis). Nun soll es doch nur eine Anzeige sein, in der immer die Zuletzt eingegebene Zahl (nicht der Operator) erscheint und wenn man gleich drückt, dann das Ergebnis.
Irgendwie stehe ich momentan völlig aufm schlauch.
Hier der Code:
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class BackEnd { private double ergebnis; private String eingabeString =""; private String ausgabeString =""; public BackEnd() { ergebnis=0; ausgabeString=""; eingabeString=""; } public void nextCommand(String inString) { eingabeString += inString; //Alles löschen if(inString.equals("delete")) { ergebnis = 0.; eingabeString = ""; } if(inString.equals("=")) { eingabeString = eingabeString.substring(0, eingabeString.length()-1); //Gleichzeichen sofort wieder entfernen String formel = eingabeString; ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); try { engine.eval("var v = eval("+formel+")"); double b =(Double) engine.get("v"); ergebnis = b; System.out.println("Ergebnis: "+b); } catch (ScriptException e) { System.out.println("Das war wohl nix"); e.printStackTrace(); } } } public String getEingabeString() { System.out.println("\nEingabe-String = "+eingabeString); int stellen = 8; //Stellen auf die das Ergebnis gerundet wird double factor = Math.pow(10, stellen); //Faktor für die Rundung boolean keinKommaNull; // Zahl mit 100 multiplizieren, dann runden, anschliessend wieder durch 100 teilen double gerundeteZahl = Math.round(ergebnis * factor) / factor; String erg = String.valueOf( gerundeteZahl ); System.out.println("\nErgebnis-String = "+erg.toString()); ausgabeString = erg; if(keinKommaNull = ausgabeString.endsWith(".0")) { ausgabeString = ausgabeString.substring(0, ausgabeString.length()-2); return ausgabeString; } else { return ausgabeString; } } }
Vielen Dank! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Leider verstehe ich Dein Problem nicht?!
Könntest Du das 'mal etwas näher beschreiben?
&greetinx;
WS
-
Ich habs selber grade gelöst, war vorhin nur einfach n bisschen blöd...
Versuche es trotzdem nochmal zu erklären:
es gab zwei Strings die getrennt voneinander Ein- und Ausgabe zurückgaben.
Ich wollte nun, dass es nur noch eine Ausgabe zurückgegeben wird. Also solange ich nicht gleich drücke immer die zuletzt eingegebene Zahl und wenn man dann gleich drückt das Ergebnis.
Weiß nicht, ob das jetzt verständlicher war, ich glaube man müsste es einfach sehen :)
Auf jeden Fall funktioniert es jetzt! -
mit welchem Programm machst du bzw nutzt du für Java Anwendungen??
ich hab eclipse -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage