Hallo mein ursprüngliches Thema "Frage zum javaFX Taschenrechner" finde ich nicht mehr, wenn ich auf die Links in meiner Mail klicke
werde ich zu allen möglichen Themen geleitet nur nicht zu meinem ursprünglichen. Deshalb habe ich jetzt einen neues Thema geöffnet (Sorry! ;-))
Jetzt meine Frage:
ich versuche über try-catch eine If-Bedingung zu erstellen die mir den eingegebenen Text in Feld eingabe1 und eingabe2 die Anzahl der eingegebenen Zeichen ermittelt und wenn diese die Anzahl von 10 überschreitet dann soll er eine Fehlermeldung ausgeben.
Hier mein Code:
[CODE lang="java" title="Hier nur die Methode für das Berechnen mit dem try-catch block" highlight="14-17"] @FXML private void berechnen() {
//ergebnis muss initialisiert werden
double zahl1 = 0, zahl2 = 0, ergebnis = 0;
boolean fehlerFlag = false;
//jetzt mit Fehlerbehandlung und Ausgabe der Meldung durch eine einge Methode
try {
//fuer das Konvertieren
Number wert = NumberFormat.getNumberInstance(Locale.GERMANY).parse(eingabe1.getText());
//zahl1 als double deklarieren, um damit rechnen zu koennen
zahl1 = wert.doubleValue();
}
catch (Exception ParseException) {
if (eingabe1.getText().length() > 10)
fehlermeldung(eingabe1);
ausgabe.setText("Nicht def.");
return;
}
try {
//fuer das Konvertieren
Number wert = NumberFormat.getNumberInstance(Locale.GERMANY).parse(eingabe2.getText());
//zahl2 als double deklarieren, um damit rechnen zu koennen
zahl2 = wert.doubleValue();
}
catch (Exception ParseException) {
if (eingabe2.getText().length() > 10) {
fehlermeldung(eingabe2);
return;
}
}
//welche Operation ist ausgewaehlt?
//die Auswahl wird ausgewertet ueber die Methode getSelectedItem()
//die Methode ermittelt den aktuellen Eintrag von auswahl
String tempAuswahl = auswahl.getSelectionModel().getSelectedItem().toString();
if (tempAuswahl.equals("Addition"))
ergebnis = zahl1 + zahl2;
if (tempAuswahl.equals("Subtraktion"))
ergebnis = zahl1 - zahl2;
if (tempAuswahl.equals("Multiplikation"))
ergebnis = zahl1 * zahl2;
if (tempAuswahl.equals("Division")) {
if (zahl2 != 0)
ergebnis = zahl1 / zahl2;
else
fehlerFlag = true;
}
//wenn es keine Probleme gegeben hat, liefern wir das Ergebnis zurueck
if (fehlerFlag == false) {
DecimalFormat formatFolge = new DecimalFormat("#,##0.00");
String tempausgabe = formatFolge.format(ergebnis);
//das Format anwenden, das Ergebnis ist eine Zeichenkette
ausgabe.setText(tempausgabe);
}
else
ausgabe.setText("Nicht def.");
return;
}
//die Methode fuer die Fehlermeldung eingabe1
@FXML private void fehlermeldung(TextField eingabe1) {
Alert meinDialog = new Alert(AlertType.INFORMATION, "Ihre Eingabe hat mehr als 10 Stellen");
//den Text setzen
meinDialog.setHeaderText("Eingabefehler");
//den Dialog anzeigen
meinDialog.showAndWait();
}[/CODE]
Hier nochmal danke an kneitzel für seine wirklich super Tips auf meine ursprünglichen Eintrag. Ich werde es lieber so umsetzen, wie in der Aufgabe gestellt.
Ich soll den java-Swing Taschenrechner in javaFX umsetzen, deshalb habe ich den swing-Code 1:1 übernommen und nur die Befehle angepasst aber nichts am Aufbau der Aufgabe.
werde ich zu allen möglichen Themen geleitet nur nicht zu meinem ursprünglichen. Deshalb habe ich jetzt einen neues Thema geöffnet (Sorry! ;-))
Jetzt meine Frage:
ich versuche über try-catch eine If-Bedingung zu erstellen die mir den eingegebenen Text in Feld eingabe1 und eingabe2 die Anzahl der eingegebenen Zeichen ermittelt und wenn diese die Anzahl von 10 überschreitet dann soll er eine Fehlermeldung ausgeben.
Hier mein Code:
[CODE lang="java" title="Hier nur die Methode für das Berechnen mit dem try-catch block" highlight="14-17"] @FXML private void berechnen() {
//ergebnis muss initialisiert werden
double zahl1 = 0, zahl2 = 0, ergebnis = 0;
boolean fehlerFlag = false;
//jetzt mit Fehlerbehandlung und Ausgabe der Meldung durch eine einge Methode
try {
//fuer das Konvertieren
Number wert = NumberFormat.getNumberInstance(Locale.GERMANY).parse(eingabe1.getText());
//zahl1 als double deklarieren, um damit rechnen zu koennen
zahl1 = wert.doubleValue();
}
catch (Exception ParseException) {
if (eingabe1.getText().length() > 10)
fehlermeldung(eingabe1);
ausgabe.setText("Nicht def.");
return;
}
try {
//fuer das Konvertieren
Number wert = NumberFormat.getNumberInstance(Locale.GERMANY).parse(eingabe2.getText());
//zahl2 als double deklarieren, um damit rechnen zu koennen
zahl2 = wert.doubleValue();
}
catch (Exception ParseException) {
if (eingabe2.getText().length() > 10) {
fehlermeldung(eingabe2);
return;
}
}
//welche Operation ist ausgewaehlt?
//die Auswahl wird ausgewertet ueber die Methode getSelectedItem()
//die Methode ermittelt den aktuellen Eintrag von auswahl
String tempAuswahl = auswahl.getSelectionModel().getSelectedItem().toString();
if (tempAuswahl.equals("Addition"))
ergebnis = zahl1 + zahl2;
if (tempAuswahl.equals("Subtraktion"))
ergebnis = zahl1 - zahl2;
if (tempAuswahl.equals("Multiplikation"))
ergebnis = zahl1 * zahl2;
if (tempAuswahl.equals("Division")) {
if (zahl2 != 0)
ergebnis = zahl1 / zahl2;
else
fehlerFlag = true;
}
//wenn es keine Probleme gegeben hat, liefern wir das Ergebnis zurueck
if (fehlerFlag == false) {
DecimalFormat formatFolge = new DecimalFormat("#,##0.00");
String tempausgabe = formatFolge.format(ergebnis);
//das Format anwenden, das Ergebnis ist eine Zeichenkette
ausgabe.setText(tempausgabe);
}
else
ausgabe.setText("Nicht def.");
return;
}
//die Methode fuer die Fehlermeldung eingabe1
@FXML private void fehlermeldung(TextField eingabe1) {
Alert meinDialog = new Alert(AlertType.INFORMATION, "Ihre Eingabe hat mehr als 10 Stellen");
//den Text setzen
meinDialog.setHeaderText("Eingabefehler");
//den Dialog anzeigen
meinDialog.showAndWait();
}[/CODE]
Hier nochmal danke an kneitzel für seine wirklich super Tips auf meine ursprünglichen Eintrag. Ich werde es lieber so umsetzen, wie in der Aufgabe gestellt.
Ich soll den java-Swing Taschenrechner in javaFX umsetzen, deshalb habe ich den swing-Code 1:1 übernommen und nur die Befehle angepasst aber nichts am Aufbau der Aufgabe.