Code bzw. Befehl in Java Eclipse für Summe berechnen?

Der Frame - (Java, Eclipse)

3 Antworten

Ich gehe davon aus, dass ihr Swing benutzt, um diese GUI aufzubauen. Zum Verständnis für dich: Sobald du auf einen Button klickst, wird ein ActionEvent ausgelöst. Dieses musst du verwenden, um durch den ActionListener des Buttons eine Aktion auszuführen. Beispiel:

JButton b = new JButton("Etwas tun");
b.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      System.out.println("Button wurde geklickt"); //Nur ein Beispiel
   }
});

Ich hoffe die Syntax ist so richtig, habe es nicht überprüft. Alles was also in der actionPerformed-Methode der inneren Klasse (in diesem Fall eben der ActionListener) steht, wird nun beim Klick auf den Button b ausgeführt. 

Die einzige Information, die dir jetzt noch fehlt, um deine Aufgabe zu lösen, ist, wie man den Text aus den JTextFields abliest und damit rechnet. 
Um den Text abzufragen bieten die JTextFields eine eigene Methode:

String s = jtf.getText(); //jts steht für ein beliebiges JTextField

Diese liefert dir allerdings einen String zurück. Um mit dem Wert rechnen zu können, musst du den String zu einem numerischen Zahlenwert casten. In diesem Fall wäre Double angebracht. Dies geschieht folgendermaßen:

double d = Double.parseDouble(s); //s steht für einen String

Mach dies für die Textfelder, aus denen du die Werte lesen sollst, und du hast deine Zahlenwerte und kannst einfach rechnen (ich denke das muss ich dir nicht erklären). Wenn du alle Berechnungen und die Ergebnisse in Variablen abgespeichert hast, kannst du die Ergebnisse in die vorgesehenen Ergebnis-Textfelder schreiben. Dies geht ähnlich einfach wie das lesen daraus: 

jtf.setText("Ergebnis: " + d); //jts ist ein beliebiges JTextField und d ist ein beliebiger Double-Wert

Ich denke das sollte dir genug Hilfe bieten, um die Aufgabe problemlos lösen zu können. Wenn du weitere Hilfe brauchst, melde dich :)

GitUke  07.03.2017, 19:32

Wenn du deinen Lehrer noch ein bisschen beeindrucken willst, kannst du noch Ausnahmefälle abfangen. Sprich wenn z.B. ein Nutzer deines Programms statt gültigen Zahlenwerten irgendwelche Buchstaben, Sonderzeichen o.Ä. eingegeben hat. Im jetzigen Zustand deines Programms würde es nämlich crashen, weil du Buchstaben und ähnliche Zeichen nicht zu einer Zahl casten kannst. 

Daher muss dieser Ausnahmefall abgefangen werden. Das geht ganz einfach: Den Teil, in dem du den String zu einem Double-Wert umwandelst, musst du in einen try-Block packen:

try {
  double d = Double.parseDouble(s);
} catch(NumberFormatException nfe) {
  System.out.println("Bitte gültige Zahlenwerte eingeben!");
}

Somit wird "versucht", das auszuführen, was im try-Block steht. Tritt dabei ein Fehler auf (also z.B. wenn der String nicht zu einem Double gecastet werden kann), wird automatisch eine sog. Exception geworfen. Diese fängst du mit dem catch-Block auf. Das verhindert einerseits, dass dein Programm abstürzt, und andererseits, um festzustellen, dass eine Ausnahme (also eine Exception) aufgetreten ist. In diesem Fall kann nur eine NumberFormatException auftreten, es gibt aber noch eine Menge anderer Exceptions. Wenn du dir nicht sicher bist, welche geworfen werden kann, kannst du einfach nur Exception e benutzen, somit werden alle Exception-Typen abgedeckt. Im catch-Block kannst du dann deine Ausnahme-Behandlung durchführen. In diesem Beispiel lasse ich den Benutzer einfach durch eine Konsolenausgabe wissen, dass er eine ungültige Eingabe getätigt hat. 

Würde mich über eine Bewertung freuen :)

0

Du musst das OnClick-Event des Buttons nutzen, um den Rechencode auszuführen. Um die Summe zu berechnen, brauchst du die Zahlen der beiden Textfelder:
int a1 = Integer.parseInt(Textfeld1.text);
int a2 = Integer.parseInt(Textfeld2.text);
String sum = String.valueOf(a1 + a2);
Textfeld_Von_Summe.setText(sum);

Da ich nicht weiß, wie das Fenster gebaut wurde, musst du die Metoden- und Variablennamen der Textfelder anpassen.

LadyLike2 
Fragesteller
 07.03.2017, 19:20

Danke, das hat mir wirklich weiter geholfen.

0
GitUke  07.03.2017, 19:24

Man sollte allerdings beachten, dass man hier die aus den Textfeldern gelesenen Werte nicht in einen Integer-Wert casten sollte. Durch die Integer-Arithmetik erhält man sonst bei den Berechnungen ungenaue bzw. sogar falsche Ergebnisse.

0
int i = 10, j = 5, r; 

r = i + j;
r = i - j;
r = i * j;
r = i / j;
r = i % j;
r = -i;