Hallo zusammen,
ich bin noch recht neu im JAVA Umfeld und beginne aktuell meine ersten Anwendungen zu schreiben. Zwischenzeitlich habe ich mich an Swing und AWT herangestatet und entwerfe derzeit einen Taschenrechner (Ich benötige etwas konkretes, an dem ich Lernen kann).
Bisher funktionierte der Rechner zuverlässig, Grundrechenarten, Wurzeln, etc. kann ich wunderbar damit berechnen. Vor kurzem habe ich mich daran gemacht, Potenzen zu integrieren, aber hier stoße ich auf ein Problem: Mittels eines ActionListeners (siehe Code Bsp) ermittel ich, welche Taste gedrückt wurde und übergebe dies an einen String. Je nach Erfordernis forme ich den Typ (meistens via Double.parseDouble(Variable) ) nochmals um. Wenn ich jedoch die Methode Math.pow nutzen möchte, stehe ich vor dem Problem, dass hier zwei Double Werte benötigt werden. Ich habe es schon versucht mittels Hilfsvariablen bzw. auch Arrays zu lösen. Mein Grundgedanke ist, dass der ActionListener in ein Array der Länge zwei jeweils einen Input übermittelt. Da ich allerdings alles mit einem String abfrage, funktioniert dies nicht.
Der obige Codeauszug ist eine aktuelle Arbeitsdatei, daher auch noch die printlns, um gewisse Werte in der Konsole zur Fehlerbehebung besser zu kontrollieren.
Wie deutlich zu erkennen wird ein Klick initial im String val1 verarbeitet. val2 wird genutzt für die Konvertierung zu Double Werten. val1 und val2 werden hierbei für die meisten Tasten genutzt und stehen daher noch vor der if-Schleife, damit der Code so übersichtlicher wird.
Aus meiner Sicht besteht das Problem darin, dass jede Eingabe mittels einer Taste in val1 initial gespeichert wird und ich daher im Falle einer Potenz nicht unterscheiden kann, welche Eingabe zum ersten double Wert und welche zum Zweiten gehören soll.
Die Idee mit den Arrays kam mir durch meine ersten Übungen an der Konsole vpn Eclipse, hier konnte ich mittels eines Scanners mehrere Werte abfragen, welche dann in das Array gespeichert wurden.
Meine Frage lautet daher: Gibt es eine Möglichkeit, wie ich die benötigten Werte (double 1 und double 2) unterscheiden kann? Mir gehen so langsam die Ideen aus.
Ich hoffe, dass mir ein alter Hase evtl. ein wenig Hilfestellung geben kann (und sei es nur mit einem Verweis an die richtige Stelle in der API (diese überfordert mich aktuell noch ein wenig)).
Danke & Gruß
mwb
ich bin noch recht neu im JAVA Umfeld und beginne aktuell meine ersten Anwendungen zu schreiben. Zwischenzeitlich habe ich mich an Swing und AWT herangestatet und entwerfe derzeit einen Taschenrechner (Ich benötige etwas konkretes, an dem ich Lernen kann).
Bisher funktionierte der Rechner zuverlässig, Grundrechenarten, Wurzeln, etc. kann ich wunderbar damit berechnen. Vor kurzem habe ich mich daran gemacht, Potenzen zu integrieren, aber hier stoße ich auf ein Problem: Mittels eines ActionListeners (siehe Code Bsp) ermittel ich, welche Taste gedrückt wurde und übergebe dies an einen String. Je nach Erfordernis forme ich den Typ (meistens via Double.parseDouble(Variable) ) nochmals um. Wenn ich jedoch die Methode Math.pow nutzen möchte, stehe ich vor dem Problem, dass hier zwei Double Werte benötigt werden. Ich habe es schon versucht mittels Hilfsvariablen bzw. auch Arrays zu lösen. Mein Grundgedanke ist, dass der ActionListener in ein Array der Länge zwei jeweils einen Input übermittelt. Da ich allerdings alles mit einem String abfrage, funktioniert dies nicht.
Java:
//Gekürzerter Code mit dem Wesentlichen für bessere Lesbarkeit
ActionListener mathm=new MathmAction(); //Action Listener für mathematische Funktionen
addButton("pot", mathm);
private class MathmAction implements ActionListener{
public void actionPerformed(ActionEvent event){
String mathm=event.getActionCommand();
String val1=display.getText();
Double val2=Double.parseDouble(val1);
if(mathm.equals("e^x")){
double val3=Math.exp(val2);
String val4=String.valueOf(val3); //Konvertierung von val3 für Rückgabe ans Display: String
display.setText(val4);
result=val3;
}else if(mathm.equals("pot")){
double [] x= new double[2];
String abc=val1;
x[0]=Double.parseDouble(abc);
System.out.println("Der Wert des Arrays an der Stelle 0 beträgt: " +x[0]);
x[1]=Double.parseDouble(val1);
System.out.println("Der Wert des zweiten Arrays an der Stelle 1 beträgt: " +x[1]);
String ergebnis=String.valueOf(Math.pow(x[0], x[1]));
display.setText(ergebnis);
}
Der obige Codeauszug ist eine aktuelle Arbeitsdatei, daher auch noch die printlns, um gewisse Werte in der Konsole zur Fehlerbehebung besser zu kontrollieren.
Wie deutlich zu erkennen wird ein Klick initial im String val1 verarbeitet. val2 wird genutzt für die Konvertierung zu Double Werten. val1 und val2 werden hierbei für die meisten Tasten genutzt und stehen daher noch vor der if-Schleife, damit der Code so übersichtlicher wird.
Aus meiner Sicht besteht das Problem darin, dass jede Eingabe mittels einer Taste in val1 initial gespeichert wird und ich daher im Falle einer Potenz nicht unterscheiden kann, welche Eingabe zum ersten double Wert und welche zum Zweiten gehören soll.
Die Idee mit den Arrays kam mir durch meine ersten Übungen an der Konsole vpn Eclipse, hier konnte ich mittels eines Scanners mehrere Werte abfragen, welche dann in das Array gespeichert wurden.
Meine Frage lautet daher: Gibt es eine Möglichkeit, wie ich die benötigten Werte (double 1 und double 2) unterscheiden kann? Mir gehen so langsam die Ideen aus.
Ich hoffe, dass mir ein alter Hase evtl. ein wenig Hilfestellung geben kann (und sei es nur mit einem Verweis an die richtige Stelle in der API (diese überfordert mich aktuell noch ein wenig)).
Danke & Gruß
mwb