If Abfragen Problem

ChrisB.

Mitglied
Guten Tag,
und zwar bin ich gerade daran ein "Quadratic Equations Solver" zu programmieren.
Er funktioniert auch sehr gut, doch möchte ich auch eine Abfrage erstellen, ob die 3 Felder leer sind, wo man die Koeffizienten von a,b und c eingibt. Ich habe das insoweit schon viel versucht aber irgendwie will das einfach nicht klappen. Ich hoffe ihr könnt mir da weiter helfen.
Er soll einfach die Rechnung durchführen, wenn alle Number Fields gefüllt sind, sobald aber eins leer ist soll er eine Fehlermeldung ausgeben.

Ich werde mal den Code für das Button Event hier reinstellen:

Java:
public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    
    
    if ( (nf_a != null) && (nf_b != null) && (nf_c != null)  )
    {
      
      double a,b,c,x1,x2,D;
      
          
      a = nf_a.getDouble();
      b = nf_b.getDouble();
      c = nf_c.getDouble();
      
      lb_function.setText(a+" x² * "+b+" x * "+c);
      
      btn_clear_ActionPerformed(evt);
      
      if (a != 0) 
      {
        
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
        
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
      
    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    } 
  }

Ich habe es auch bereits mit equals versucht, aber auch ohne Erfolg. Auch mit dem Logischen Oder habe ich es versucht. Vermutlich liegt es einfach an einem logischen Denkfehler.

Würde mich freuen, wenn ihr mir hier weiter helfen könnt.

MfG
 
Zuletzt bearbeitet:

njans

Top Contributor
nf_a,b,c sind vom typ int oder Integer?
int kann niemals null sein, da es ein primitiver Typ ist. Integer hingegen kann null sein.
 

ChrisB.

Mitglied
Das sind doch Double Werte?
Aber selbst wenn ich nf_a.equals("") mache geht das nicht, er macht alles mögliche manchmal rechnet er, manchmal geht er in die Meldung rein, das ein Feld leer ist, er tut alles mögliche nur nicht genau das was ich will.

Du meinst also ich soll anders die überprüfung machen als mit der Überprüfung um der Wert null ist?
 

njans

Top Contributor
Wenn du einen Double mit einem leeren String vergleichst, kann das niemals true sein. Ein Double ist ein Double, ein String ist ein String, das sind verschiedene Typen.

Zeige mal bitte den Code zu deinen nf_a,b,c Objekten.
 
Zuletzt bearbeitet:

Sakresh

Mitglied
Es sind eben keine Double-Werte, sonder double-Werte und da double ein primitiver Datentyp ist, kann dieser nicht null sein.
Versuch's mal mit nem großen 'D' ;)
 

njans

Top Contributor
Java:
a = nf_a.getDouble();
      b = nf_b.getDouble();
      c = nf_c.getDouble();

Naja in nf_a,b,c könnten es Double Werte sein, daraus macht er dann mit autoboxing eben doubles.
 

VfL_Freak

Top Contributor
Moin,

wenn nf_a, nf_b und nf_c wirklich double-Werte wären, warum dann
Java:
a = nf_a.getDouble();
b = nf_b.getDouble();
c = nf_c.getDouble();
???:L

Poste doch einfach, wie hier schon mehrfach geschrieben, die Deklaration der drei Variablen .....

Gruß
Klaus
 

ChrisB.

Mitglied
[STRIKE]Die stehen doch oben im Code mit drinne.

Java:
double a,b,c,x1,x2,D;

Die Initialisierung der Variabeln soll ja erst erfolgen sobald überprüft wurde das alle 3 FElder belegt sind.[/STRIKE]

Achso ich verstehe was er nun meint. nf_a,bc sind Number Fields.

Außerdem geht es ja vielemehr um das:
Java:
  if ( (nf_a != null) && (nf_b != null) && (nf_c != null)  ) { ......... }  
else 
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!"); 
    }

Weil der Rechner an sich funktioniert ja, nur eben halt nicht das er nicht rechnet, wenn ich ein Feld nicht ausgefüllt habe, da will er auch rechnen und das führt halt zu ner Fehler meldung
 
Zuletzt bearbeitet:

ChrisB.

Mitglied
Also nochmal ... oh man ich glaube wir reden hier bisschen einander vorbei, weil keiner so wirklich kapiert was der andere hier damit sagen willl:

Ich habe mir ein Formular erstellt, dort habe ich unteranderem NumberField drauf gepackt, so heißen sie bei meinem Java Editor. Sprich Edit Felder nur für Zahlen halt. Dort gibt der Benutzer dann Zahlen ein. Dann drückt er auf einen Button, dann errechnet das Programm die x-Werte.
Wenn aber der Benutzer ein Feld auslässt gibt es n Error, was ja auch verständlich ist, weil er ja mit einem Wert rechnet wo nichts drinne ist. Ich möchte aber eine Abfrage erstellen, wo er überprüft ob alle 3 Felder, also alle drei NumberFields (nf_a,b,c), mit einem Wert belegt sind.
Ist das der Fall, dann soll er den Variabeln (a,b,c) den Wert von nf_a,b,c überweisen, damit das Programm rechnen kann.
Zurzeit funktioniert aber nur nicht das er überprüft ob die 3 Numberfield (nf_a,b,c) belegt sind und demenstprechend eine eigene erstellte Fehlermeldung ausgibt.
Es hapert also an der If-Abfrage von:

Java:
    if ( (nf_a != null) && (nf_b != null) && (nf_c != null)  ) 
      { 
        ......... 
      }  
    else
        {
          ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
        }

Heißt also das ich die NumberFields nicht so mit dem Wert Null vergleichen kann, right?
Und meine Frage ist, wie die richtige If-Abfrage lautet, das er richtig überprüft ob eins von den Feldern leer ist und wenn ja geht er zu dieser else anweisung.

Hoffe ich habe das nun gut erklärt, was ich meine :).
Aber danke das du noch den Nerv hast hier weiter zu helfen.
 

Beatsleigher

Bekanntes Mitglied
Kann es sein, dass du aus einer JTextField liest?
wenn ja, dann musst du folgenden Code nehmen:

Java:
Double a, b, c;

if ((jtextField1.getText() != null | jTextField1.getText() != "") && (jtextField2.getText() != null | jTextField2.getText() != "") && (jtextField3.getText() != null | jTextField3.getText() != "")) {
    a = double.valueOf(jTextField1.getText());
    b = Double.valueOf(jTextField2.getText());
    c = Double.valueOf(jTextField3.getText());
    // Und was dir sonst noch so einfällt.
}

/* Disclaimer:
 * Ich habe niemals behauptet, dass mein Code sauber ist.
 */
 

ChrisB.

Mitglied
Wie gesagt das auslesen aus den NumberFields klappt.

Hier auch noch mal der Beweis das es Numberfields sind aus dem Programmcode:
Java:
private NumberField nf_a = new NumberField();
  private NumberField nf_b = new NumberField();
  private NumberField nf_c = new NumberField();

Es hapert eig nur an der Überprüfung ob das Numberfield = Null ist, sprich Leer ist.
 

VfL_Freak

Top Contributor
Moin,

Java:
if ( (nf_a != null) && (nf_b != null) && (nf_c != null)  )
also, rein syntaktisch sieht das erstmal korrekt aus ....

Setz' doch einfach mal einen Breakpunkt in der Zeile und schau im Debugger, ob nicht DOCH einer der Werte NULL ist ....

Gruß
Klaus
 

X5-599

Top Contributor
Also wenn deine eigene action performed Methode nicht in einem try / catch Block steht, müsste es an dieser Stelle schon scheppern wenn die Felder in der Oberfläche nicht beschrieben sind:

Java:
a = nf_a.getDouble();

Denn laut Java Editor Seite wird im NumberField sowas gemacht:
Java:
public double getDouble() {
    Double d = new Double(getText());
    return d.doubleValue();
  }

Und ein leerer String (den getText zurückgibt wenn nichts drin steht) gefällt dem Double Konstruktor überhaupt nicht...

Du könntest diese Methode wie folgt ändern:
Java:
public double getDouble() {
    String text = getText();
    Double d;
    if(text.equals("")) {
        d = new Double(0.0);
    }
    else {
        d = new Double(getText());
    }
    return d.doubleValue();
  }

Ganugenommen würde in die erste Abfrage auch eine "Nur Ziffern" Überprüfung gut passen...
 

ChrisB.

Mitglied
@VfL_Freak:

Ich habe mal ein Breakpoint gesetzt bei der If-Abfrage. Bei beiden Fällen, sprich wenn ein Feld leer ist und wenn alle Felder belegt sind, gibt er dort eine Fehlermeldung raus. Dennoch geht er in die Schleife rein und berechnet die Werte, beispielsweise wenn alle Felder belegt sind, dann berechnet er das auch alles und zeigt nach außen hin keine Fehler, aber dennoch setzt er mir tot einen roten Pfeil.

@X5-599:

Um ehrlich zu sein habe ich davon nichts verstanden. Also wie wir jetzt festgestellt haben gibt er dort eine Fehlermeldung raus, wie du es bereits vorhergesagt hast. Es steht auch nicht in einem Try/Catch Block .
Aber ich verstehe jetzt nicht inwieweit das NumberField mit String zusammenhängt. Weil ich doch per getDouble mir den Double Wert auf die Variabel zuweise, das ist doch auch so korrekt oder nicht?
Ich weiß ja nicht ob das euch hier was hilft, der ganze Programmcode:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
import javax.swing.*;
import javax.swing.event.*;


public class quadraticquationssolver extends Frame {
  // Anfang Attribute
  private Label label1 = new Label();
  private NumberField nf_a = new NumberField();
  private Label label2 = new Label();
  private NumberField nf_b = new NumberField();
  private Label label3 = new Label();
  private NumberField nf_c = new NumberField();
  private Button btn_calc = new Button();
  private Label label4 = new Label();
  private Label label5 = new Label();
  private Label label6 = new Label();
  private NumberField nf_D = new NumberField();
  private NumberField nf_x1 = new NumberField();
  private NumberField nf_x2 = new NumberField();
  private Button btn_close = new Button();
  private Button btn_clear = new Button();
  private TextArea ta_nachricht = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
  private Label label7 = new Label();
  private Label lb_title = new Label();
  private Label label8 = new Label();
  private Label lb_function = new Label();
  // Ende Attribute
  
  public quadraticquationssolver(String title) { 
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 272; 
    int frameHeight = 543;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten
    
    label1.setBounds(40, 64, 110, 20);
    label1.setText("Koeffizient  ' a ' :");
    label1.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label1);
    nf_a.setBounds(152, 64, 75, 20);
    nf_a.setText("");
    cp.add(nf_a);
    label2.setBounds(40, 96, 110, 20);
    label2.setText("Koeffizient  ' b ' :");
    label2.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label2);
    nf_b.setBounds(152, 96, 75, 20);
    nf_b.setText("");
    cp.add(nf_b);
    label3.setBounds(40, 136, 110, 20);
    label3.setText("Koeffizient  ' c ' :");
    label3.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label3);
    nf_c.setBounds(152, 136, 75, 20);
    nf_c.setText("");
    cp.add(nf_c);
    btn_calc.setBounds(40, 216, 187, 41);
    btn_calc.setLabel("X-Werte ermitteln");
    btn_calc.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_calc_ActionPerformed(evt);
      }
    });
    cp.add(btn_calc);
    label4.setBounds(112, 312, 30, 20);
    label4.setText("x1 :");
    label4.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label4);
    label5.setBounds(112, 344, 30, 20);
    label5.setText("x2 :");
    label5.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label5);
    label6.setBounds(34, 280, 101, 20);
    label6.setText("Diskriminante D :");
    label6.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label6);
    nf_D.setBounds(144, 280, 75, 20);
    nf_D.setText("");
    nf_D.setEditable(false);
    cp.add(nf_D);
    nf_x1.setBounds(144, 312, 75, 20);
    nf_x1.setText("");
    nf_x1.setEditable(false);
    cp.add(nf_x1);
    nf_x2.setBounds(144, 344, 75, 20);
    nf_x2.setText("");
    nf_x2.setEditable(false);
    cp.add(nf_x2);
    btn_close.setBounds(165, 488, 91, 25);
    btn_close.setLabel("Close");
    btn_close.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_close_ActionPerformed(evt);
      }
    });
    cp.add(btn_close);
    btn_clear.setBounds(8, 488, 91, 25);
    btn_clear.setLabel("Clear");
    btn_clear.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_clear_ActionPerformed(evt);
      }
    });
    cp.add(btn_clear);
    ta_nachricht.setBounds(8, 400, 248, 84);
    ta_nachricht.setEditable(false);
    cp.add(ta_nachricht);
    label7.setBounds(8, 376, 60, 20);
    label7.setText("Nachricht:");
    label7.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label7);
    setTitle("Quadratic Equations Solver");
    lb_title.setBounds(32, 16, 211, 27);
    lb_title.setText("Quadratic Equations Solver");
    lb_title.setFont(new Font("Times New Roman", Font.BOLD, 16));
    cp.add(lb_title);
    label8.setBounds(8, 176, 110, 20);
    label8.setText("Ausgangsfunktion:");
    label8.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label8);
    lb_function.setBounds(136, 176, 110, 20);
    lb_function.setText("-");
    cp.add(lb_function);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public quadraticquationssolver
  
  
  
  
  
  
  // Anfang Methoden
  
  
  
  
  public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    
    
    if ( (nf_a.getDouble() != 0) && (nf_b.getDouble() != 0) && (nf_c.getDouble() != 0)  )
    {
      
      double a,b,c,x1,x2,D;
      
      
      a = nf_a.getDouble();
      b = nf_b.getDouble();
      c = nf_c.getDouble();
      
      lb_function.setText(a+" x² * "+b+" x * "+c);
      
      
      if (a != 0) 
      {
        
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
        
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
      
    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    } 
  }
  
  
  public void btn_close_ActionPerformed(ActionEvent evt) {
    System.exit(-1);
  } // end of btn_close_ActionPerformed
  
  public void btn_clear_ActionPerformed(ActionEvent evt) {
    nf_a.clear();
    nf_b.clear();
    nf_c.clear();
    nf_D.clear();
    nf_x1.clear();
    nf_x2.clear();
    ta_nachricht.setText("");
    lb_function.setText("-");
  } // end of btn_clear_ActionPerformed
  
  // Ende Methoden
  
  public static void main(String[] args) {
    new quadraticquationssolver("quadraticquationssolver");
  } // end of main
  
} // end of class quadraticquationssolver
 

VfL_Freak

Top Contributor
Moin,

Ich habe mal ein Breakpoint gesetzt bei der If-Abfrage. Bei beiden Fällen, sprich wenn ein Feld leer ist und wenn alle Felder belegt sind, gibt er dort eine Fehlermeldung raus.
das ist ja auch richtig so, da Deine Bedingung UND-verknüpft sind !

Dennoch geht er in die Schleife rein und berechnet die Werte, beispielsweise wenn alle Felder belegt sind, dann berechnet er das auch alles
Was meinst dur mit beispielsweise ???:L
Doch wohl nur dann, wenn alle ungleich NULL (s. o.) ...

und zeigt nach außen hin keine Fehler, aber dennoch setzt er mir tot einen roten Pfeil.
*bahnhof*
Bitte was ???:L
Was für einen "toten" roten Pfeil ??
Mach' mal 'nen Screenshot davon .....

Gruß
Klaus
 

ChrisB.

Mitglied
Der rote Pfeil, wenn es zu einem Fehler kommt.
Wie man sieht hat er trotzdem gerechnet, auch wenn ein Fehler kommt an der If-Abfrage.
Das meinte ich auch mit "beispielsweise", denn nach "außen" hin gibt er ja nicht aus, das irgendwas nicht stimmt, weil der Benutzer davon ausgeht, wenn er rechnet dann hat das Programm auch keine Probleme, dem ist ja anscheinend nicht so, denn er gibt ja auch Fehlermeldung aus, wenn er rechnet. Das meinte ich auch nach "außen hin".

Ups mit dem "tot" habe ich mich wohl gerade verschrieben, bin gerade noch an einem anderen Thema dran, da geht es um Tot hahaha. :lol: Habe wohl da gerade einen Gedanken dahingehend verloren, als ich den Text geschrieben habe. :bloed:

fehlermi927nyfk3.jpg
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

hmm, leider ist die relevante Zeile durch das Fenster überdeckt ;(

Der rote Pfeil, wenn es zu einem Fehler kommt.
aha - welche Umgebung nutzt Du denn? Eclipse scheint das ja nicht zu sein (dort würde man dann ggf. Infos zum auftretenden Fehler bekommen) ...
Wird denn nirgendwo eine Info dazu angezeigt??
Ist es vlt. genau das, was X5-599 gestern schon anmerkte ???:L

Wie man sieht hat er trotzdem gerechnet, auch wenn ein Fehler kommt an der If-Abfrage.
aha ... wo sehe ich was? :bahnhof:

Sehr unwahrscheinlich, dass das Programm durchläuft und rechnet, ob ein Fehler vorliegt .....

Gruß
Klaus
 

X5-599

Top Contributor
@Vfl_Fream Er benutzt den Java Editor

Auf deren Seite gibt es Beispiel Code und auch ein paar Klassen dazu zum runterladen. z.B. NumberField. Daher ist der Code Ausschnitt den ich gestern gepostet habe.


@ChrisB
Wird evtl gar kein Fehler geworfen? Ist der rote Pfeil zufällig der Breakpoint den du gesetzt hast? Dann würde das Programm warten bis du Schritt für Schritt weiter gehst.

Edit: Du könntest dir die Klasse NumberField.java her nehmen und die Methode getDouble() neu schreiben.
Java:
    public double getDouble() {
        String text = getText();
        Double d;
        if(text.equals("")) {
            d = new Double(0.0);
        }
        else {
            d = new Double(getText());
        }
        return d.doubleValue();
      }

Wenn du die NumberField.java nicht finden kannst gibt es auch noch einen anderen Weg.
Java:
NumberField numberField = new NumberField() {
@Override
public double getDouble() {
  String text = getText();
  Double d;
  if(text.equals("")) {
      d = new Double(0.0);
  }
  else {
      d = new Double(getText());
  }
  return d.doubleValue();
}
};

Das müsstest du dann aber bei jedem NumberField machen, das du erzeugst.
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

@Vfl_Freak
Er benutzt den Java Editor
Auf deren Seite gibt es Beispiel Code und auch ein paar Klassen dazu zum runterladen. z.B. NumberField. Daher ist der Code Ausschnitt den ich gestern gepostet habe.
Ah, ok - kenne/nutze ich nicht ....

@ChrisB
Wird evtl gar kein Fehler geworfen? Ist der rote Pfeil zufällig der Breakpoint den du gesetzt hast? Dann würde das Programm warten bis du Schritt für Schritt weiter gehst.
DAS klingt dann allerdings sehr logisch !!!! ;)

Gruß
Klaus
 

X5-599

Top Contributor
Ich auch nicht. Habe gestern nur gesehen dass man daher die Klasse NumberField.java bekommen kann. Ich habe auch nochmal ein EDIT in meinen letzten Post gemacht.
 

ChrisB.

Mitglied
Ups, also der rote Pfeil bedeutet nicht gleich Fehler?
Also wenn ich mit F7 weiter gehe dann geht er auch runter.
Ich weiß ehrlich gesagt auch nicht wie eine Fehlermeldung da so aussieht.
Also wenn alle Felder belegt sind dann kann ich mit F7 weiter gehen, aber wenn eins leer ist, dann geht er nicht mit F7 weiter.

@VfL_Freak:

Das mit dem sehen meinte ich auf dem Screenshot, da sieht man ja das er rechnet und Ergebnisse ausspuckt.

Irgendwie finde ich da auch keine Ausgabe wo er mir sagt wo Fehler liegen ..

@X5-599:

Du meinst ich soll den folgenden Code, den ich jetzt aus der NumberField.java genommen habe: (Habe die aus dem Java Editor Ordner nun rausgesucht)

Java:
  /** Gets a double-value from the NumberField. */
  public double getDouble() {
    Double d = new Double(getText());
    return d.doubleValue();
  }

durch deinen Code ersetzen?
 

VfL_Freak

Top Contributor
Moin,

Ups, also der rote Pfeil bedeutet nicht gleich Fehler?
Also wenn ich mit F7 weiter gehe dann geht er auch runter.
Richtig, der rote Pfeil ist also der Anzeiger dafür, in welcher Zeile der Debugger gerade steht :toll:

Ich weiß ehrlich gesagt auch nicht wie eine Fehlermeldung da so aussieht.
Also wenn alle Felder belegt sind dann kann ich mit F7 weiter gehen, aber wenn eins leer ist, dann geht er nicht mit F7 weiter.
Irgendwie finde ich da auch keine Ausgabe wo er mir sagt wo Fehler liegen ..
Na eben - gibt auch keine Fehlermeldung, da ja alles wie gewünscht (= programmiert) funktioniert :lol:

So langsam verstehe ich nicht mehr, wo denn nun eigentlich Dein Problem liegt ... es scheint doch alles zu klappen :autsch:

Gruß
Klaus
 

ChrisB.

Mitglied
Mein Problem liegt darin, dass wenn ich nun ein Feld auslasse, soll er ja laut der If-else Anweisung, also der:

Java:
if ( (nf_a.getDouble() != 0) & (nf_b.getDouble() != 0) & (nf_c.getDouble() != 0)  )
    {
      
      .....

    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    } 
  }

Die Ausgabe machen, dass man die Eingabe überprüfen soll.
Kurzweg, er gibt diese Ausgabe nicht aus, sondern, so vermute ich, geht trotzdem in die If-Abzweigung rein.
 

X5-599

Top Contributor
@ChrisB

genauso meine ich das. Einfach mit diesem Code ersetzen:
Java:
    public double getDouble() {
            String text = getText();
            Double d;
            if(text.equals("")) {
                d = new Double(0.0);
            }
            else {
                d = new Double(getText());
            }
            return d.doubleValue();
          }

Ist immer noch nicht das gelbe von Ei, aber schonmal ein Schritt in die richtige Richtung. Vorrausetzung ist natürlich dass der Java Editor die Klasse NumberField.java auch jedesmal neu kompiliert...

Wie gesagt dürftest du keine Ergebnisse in deiner Oberfläche sehen können, wenn in einem dieser NumberField nichts drin steht. Da mit der original Methode getDouble() eine Exception geworfen werden müsste... Allerdings weiss ich nicht wie der Java Editor aufgebaut ist. Evtl verbirgt der auch solche Exceptions. Meine mal gehört zu haben, dass einige kleinere IDEs sowas hin und wieder machen.
 

VfL_Freak

Top Contributor
Moin,


Kurzweg, er gibt diese Ausgabe nicht aus, sondern, so vermute ich, geht trotzdem in die If-Abzweigung rein
Du vermutest es :eek: ???:L
Ich denke, du hast es eben gedebuggt ???:L

Java:
if ( (nf_a.getDouble() != 0) & (nf_b.getDouble() != 0) & (nf_c.getDouble() != 0)  )
// .....
Welcher Code ist denn nun aktuell ???:L
Dieser hier mit nur EINEM "&" oder der zuvor gepostete mit ZWEI "&&" ???:L
Und prüfst Du nun auf '0' oder auf NULL ???:L

Gruß
Klaus

[EDIT]Du könntest mal die einzelnen Aufrufe "nf_xxx.getDouble()" VOR die Schleife ziehen und dabei die Rückgabe auf neue, temporäre Variablen schreiben. Das ganze dann jeweile mit try-catch kapseln, um eventuelle Exceptions zu sehen ....
[/EDIT]

[EDIT]
also etwa so (ungetestet) :
Java:
double temp_a, temp_b, temp_c;

try
{
	temp_a = nf_a.getDouble();
	temp_b = nf_b.getDouble();
	temp_c = nf_c.getDouble();
}
catch( Exception ex )
{
	ex.printTrackTrace();
}

if ( (temp_a != 0) && (temp_b != 0) && (temp_c != 0)  )
// ...
[/EDIT]
 
Zuletzt bearbeitet:

ChrisB.

Mitglied
Habe etwas rumversucht, hat sich aber bei beiden Möglichkeiten nichts getan.

[STRIKE]Mit dieser try-Catch Verzweigung meinst du sowas oder?

Java:
 if ( (nf_a.getDouble() != 0) & (nf_b.getDouble() != 0) & (nf_c.getDouble() != 0)  )
    {
      
      
      try {
        double test;
        
        test = a ;
      } catch (Exception e) {
        
        JOptionPane.showMessageDialog(null, "Test", "Test Titel", JOptionPane.OK_CANCEL_OPTION);
      }
     .....

Also er gibt nicht die showmessagedialog aus, also wenn ich alle 3 gefüllt oder auch eins leer habe.[/STRIKE]

Edit: Ups ich teste deins mal.

Edit2: Er kennt ex.printTrackTrace() nicht.

Code:
quadraticquationssolver.java:181:9: error: cannot find symbol
      ex.printTrackTrace();
        ^
  symbol:   method printTrackTrace()
  location: variable ex of type Exception
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

sorry - Tippfehler ;(

Es muss natürlich printStackTrace heißen - den Begriff sollte man aber eigentlich kennen :(

gruß
Klaus
 

ChrisB.

Mitglied
Habe erst mit Java angefangen, sowas kenne ich noch nicht. Wir sind im Schulstoff ja gerade mal bei If-Abzweigungen angekommen und haben noch nicht mal try-catch gehabt, aber habe so paar Grundkenntnisse noch von Delphi.
Also, nein ich kannte den Begriff nicht ;).

Zurück zum Thema.
Mir kam bei allen Möglichkeiten keine Fehlermeldung.
 

ChrisB.

Mitglied
Ich habe mal den Code ersetzt mit dem von X5-599.

Nun sagt er mir bei der If-Abfrage das er die Double Werte nicht mit NULL vergleichen kann.

@VfL_Freak:

Der Code vom ganz am Anfang, den benutze ich gerade wieder.
Außer natürlich das ich jetzt die Numberfield.java geändert habe mit dem Code von X5-599.
Nun lässt sich das Programm aber auch nicht mehr kompelieren, nur wenn ich NULL durch 0 ersetze.

Wie würdet ihr denn die Abfrage machen, wenn ihr überprüfen wollt ob 3 Felder leer sind und wenn ja führt er xyz aus und wenn mindestens eins leer ist zyx?
 

VfL_Freak

Top Contributor
Moin,

ist es wirklich so schwer den aktuellen Code, über den wird jetzt reden, zu posten ???:L;(

Nun lässt sich das Programm aber auch nicht mehr kompilieren, nur wenn ich NULL durch 0 ersetze.
WAS heißt das ???:L
Welche Fehlermeldungen kommen denn ???:L

Gruß
Klaus
 

ChrisB.

Mitglied
Hier der aktuelle Code:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
import javax.swing.*;
import javax.swing.event.*;


public class quadraticquationssolver extends Frame {
  // Anfang Attribute
  private Label label1 = new Label();
  private NumberField nf_a = new NumberField();
  private Label label2 = new Label();
  private NumberField nf_b = new NumberField();
  private Label label3 = new Label();
  private NumberField nf_c = new NumberField();
  private Button btn_calc = new Button();
  private Label label4 = new Label();
  private Label label5 = new Label();
  private Label label6 = new Label();
  private NumberField nf_D = new NumberField();
  private NumberField nf_x1 = new NumberField();
  private NumberField nf_x2 = new NumberField();
  private Button btn_close = new Button();
  private Button btn_clear = new Button();
  private TextArea ta_nachricht = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
  private Label label7 = new Label();
  private Label lb_title = new Label();
  private Label label8 = new Label();
  private Label lb_function = new Label();
  // Ende Attribute
  
  public quadraticquationssolver(String title) { 
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 272; 
    int frameHeight = 543;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten
    
    label1.setBounds(40, 64, 110, 20);
    label1.setText("Koeffizient  ' a ' :");
    label1.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label1);
    nf_a.setBounds(152, 64, 75, 20);
    nf_a.setText("");
    cp.add(nf_a);
    label2.setBounds(40, 96, 110, 20);
    label2.setText("Koeffizient  ' b ' :");
    label2.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label2);
    nf_b.setBounds(152, 96, 75, 20);
    nf_b.setText("");
    cp.add(nf_b);
    label3.setBounds(40, 136, 110, 20);
    label3.setText("Koeffizient  ' c ' :");
    label3.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label3);
    nf_c.setBounds(152, 136, 75, 20);
    nf_c.setText("");
    cp.add(nf_c);
    btn_calc.setBounds(40, 216, 187, 41);
    btn_calc.setLabel("X-Werte ermitteln");
    btn_calc.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_calc_ActionPerformed(evt);
      }
    });
    cp.add(btn_calc);
    label4.setBounds(112, 312, 30, 20);
    label4.setText("x1 :");
    label4.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label4);
    label5.setBounds(112, 344, 30, 20);
    label5.setText("x2 :");
    label5.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label5);
    label6.setBounds(34, 280, 101, 20);
    label6.setText("Diskriminante D :");
    label6.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label6);
    nf_D.setBounds(144, 280, 75, 20);
    nf_D.setText("");
    nf_D.setEditable(false);
    cp.add(nf_D);
    nf_x1.setBounds(144, 312, 75, 20);
    nf_x1.setText("");
    nf_x1.setEditable(false);
    cp.add(nf_x1);
    nf_x2.setBounds(144, 344, 75, 20);
    nf_x2.setText("");
    nf_x2.setEditable(false);
    cp.add(nf_x2);
    btn_close.setBounds(165, 488, 91, 25);
    btn_close.setLabel("Close");
    btn_close.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_close_ActionPerformed(evt);
      }
    });
    cp.add(btn_close);
    btn_clear.setBounds(8, 488, 91, 25);
    btn_clear.setLabel("Clear");
    btn_clear.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_clear_ActionPerformed(evt);
      }
    });
    cp.add(btn_clear);
    ta_nachricht.setBounds(8, 400, 248, 84);
    ta_nachricht.setEditable(false);
    cp.add(ta_nachricht);
    label7.setBounds(8, 376, 60, 20);
    label7.setText("Nachricht:");
    label7.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label7);
    setTitle("Quadratic Equations Solver");
    lb_title.setBounds(32, 16, 211, 27);
    lb_title.setText("Quadratic Equations Solver");
    lb_title.setFont(new Font("Times New Roman", Font.BOLD, 16));
    cp.add(lb_title);
    label8.setBounds(8, 176, 110, 20);
    label8.setText("Ausgangsfunktion:");
    label8.setFont(new Font("Times New Roman", Font.BOLD, 12));
    cp.add(label8);
    lb_function.setBounds(136, 176, 110, 20);
    lb_function.setText("-");
    cp.add(lb_function);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public quadraticquationssolver
  
  
  
  
  
  
  // Anfang Methoden
  
  
  
  
  public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    double a,b,c,x1,x2,D;
    
    a = nf_a.getDouble();
    b = nf_b.getDouble();
    c = nf_c.getDouble();
    
    double temp_a, temp_b, temp_c;
    
    try
    {
      temp_a = nf_a.getDouble();
      temp_b = nf_b.getDouble();
      temp_c = nf_c.getDouble();
    }
    catch( Exception ex )
    {
      ex.printStackTrace();
    }                                       
    
    if ( (nf_a.getDouble() != null) && (nf_b.getDouble() != null) && (nf_c.getDouble() != null)  )
    {
      
      
      
      
      lb_function.setText(a+" x² * "+b+" x * "+c);
      
      
      if (a != 0) 
      {
        
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
        
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
      
    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    } 
  }
  
  
  public void btn_close_ActionPerformed(ActionEvent evt) {
    System.exit(-1);
  } // end of btn_close_ActionPerformed
  
  public void btn_clear_ActionPerformed(ActionEvent evt) {
    nf_a.clear();
    nf_b.clear();
    nf_c.clear();
    nf_D.clear();
    nf_x1.clear();
    nf_x2.clear();
    ta_nachricht.setText("");
    lb_function.setText("-");
  } // end of btn_clear_ActionPerformed
  
  // Ende Methoden
  
  public static void main(String[] args) {
    new quadraticquationssolver("quadraticquationssolver");
  } // end of main
  
} // end of class quadraticquationssolver

Als Fehlermeldungen kommen diese:

Code:
Compiliere "C:\Dokumente und Einstellungen\Torsten\Desktop\Praktikant\quadraticequationssolver_new\quadraticquationssolver.java" mit Java-Compiler
quadraticquationssolver.java:184:28: error: incomparable types: double and <null>
    if ( (nf_a.getDouble() != null) && (nf_b.getDouble() != null) && (nf_c.getDouble() != null)  )
                           ^
quadraticquationssolver.java:184:58: error: incomparable types: double and <null>
    if ( (nf_a.getDouble() != null) && (nf_b.getDouble() != null) && (nf_c.getDouble() != null)  )
                                                         ^
quadraticquationssolver.java:184:88: error: incomparable types: double and <null>
    if ( (nf_a.getDouble() != null) && (nf_b.getDouble() != null) && (nf_c.getDouble() != null)  )
                                                                                       ^
3 errors
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

die Meldung ist doch eindeutig:
incomparable types: double and <null> ;(

Da Dein "getDouble" (wo immer es jetzt herkommt) augenscheinlich eine double-Wert zurückgibt, kannst Du auch nicht auf NULL prüfen!
Dies geht bei primitiven Datentypen nicht!!

Prüfe also auf 0 !!

Gruß
Klaus
 

ChrisB.

Mitglied
Ja klar, den Fehlercode habe ich ja auch verstanden gehabt, das ist doch auch logisch gewesen haha.
Aber es geht mir darum das ich nicht auf 0 überprüfen will, das würde ja bedeuten das ja die Zahl 0 dadrinne stehen muss, sonder ich will überprüfen ob da nichts, also keine 0, rein gar nichts drinne steht.

In Delphi würde das irgendwie so aussehen:

Code:
if (edt_test.Text <> '') and (edt_test2.Text <> '') and (edt_test3.Text <> '')  then
begin
 
 blablabla

end
else
begin

  Sendenachricht("Eingabe überprüfen);

end;

Aber das ist ja Java und so funktioniert das ja nicht.
Oder kann ich irgendwie den Double Wert in String umwandeln und dann die Überprüfung machen ob der String == leer ist?
Aber das ist doch wieder viel zu viel unnötiger Programmcode das muss doch einfacher gehen.
 

VfL_Freak

Top Contributor
Moin,

nochmal:
in Java können die primitiven Datentypen NICHT NULL sein !!

Dann initialisiere sie einfach mit "0.0" :noe:

Gruß
Klaus
 

X5-599

Top Contributor
Mach es am besten ganz anders:

Nimm meinen Code wieder aus der NumberField.java raus. Dann machst du als Überprüfung ob etwas im NumberField steht: if(!nf_x1.getText().equals("") && !nf_irgendwas.equals("") ... etc

Und ich würde auch erst wenn alle Überprüfungen true sind (also im if Zweig der Abfrage) die NumberFields nach deren double Values fragen. Also so:

Java:
if(!nf_x1.getText().equals("") && !nf_irgendwas.getText().equals(""))
{
    double x1 = nf_x1.getDouble();
    double xirgendwas = nf_irgendwas.getDouble();

}
else
{
    //Eingabe überprüfen
}
 

ChrisB.

Mitglied
Na endlich es klappt. Ich habe das auch am Anfang mit Equals versucht, auch mit dem if not, doch habe ich nur ganz am Anfang dieses If zum If not gemacht, sprich nur ganz am Anfang ein Ausrufezeichen und darum ging das gestern nicht.:idea:

Danke euch beiden, habt beide ein Dankeschön erhalten, für eure Bemühungen.

Der fertige Code von der Action Performed:

Java:
  public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    double temp_a, temp_b, temp_c;
    
    
    try
    {
      temp_a = nf_a.getDouble();
      temp_b = nf_b.getDouble();
      temp_c = nf_c.getDouble();
    }
    catch( Exception ex )
    {
      ex.printStackTrace();
    }                                       
    
    
    if(!nf_a.getText().equals("") && !nf_b.getText().equals("") && !nf_c.getText().equals(""))
    {
      
      double a,b,c,x1,x2,D;
      
      a = nf_a.getDouble();
      b = nf_b.getDouble();
      c = nf_c.getDouble();
      
      lb_function.setText(a+" x² * "+b+" x * "+c);
      
      
      if (a != 0) 
      {
        
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
        
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
      
    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    }
  }

Edit: Die try catch kann ich rausnehmen oder? Oder soll ich die drinne lassen?
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

Na endlich es klappt
Gut gemacht, Padawan :lol:

Ich habe das auch am Anfang mit Equals versucht, auch mit dem if not, doch habe ich nur ganz am Anfang dieses If zum If not gemacht, sprich nur ganz am Anfang ein Ausrufezeichen und darum ging das gestern nicht.:idea:
Tipp: immer auf die dabei verwendeten Datentypen schauen !!

Die try catch kann ich rausnehmen oder? Oder soll ich die drinne lassen?
Also, ich würde sie drin lassen - aber richtig !!

Java:
  public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    if(!nf_a.getText().equals("") && !nf_b.getText().equals("") && !nf_c.getText().equals(""))
    {
      double a,b,c,x1,x2,D;
      try
      {
          a = nf_a.getDouble();
          b = nf_b.getDouble();
          c = nf_c.getDouble();
      }
      catch( Exception ex )
      {
          ex.printStackTrace();
      }     
      
      lb_function.setText(a+" x² * "+b+" x * "+c);
      if (a != 0) 
      {
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
    }
    else
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    }
  }
Überall dort, Exceptions fliegen können, müssen/sollten sie auch abgefangen werden !
Anderfalls wird die Fehlersuch ggf. zur Sisyphus-Arbeit ;)

Gruß
Klaus
 
Zuletzt bearbeitet:

ChrisB.

Mitglied
Alles klar :).

Das Problem an deinem Code ist aber das mein Java Editor dort rausschmeißt das die Variabel a,b,c möglicherweise nicht initialisiert sind.
 

VfL_Freak

Top Contributor
Moin,

Das Problem an deinem Code ist aber das mein Java Editor dort rausschmeißt das die Variabel a,b,c möglicherweise nicht initialisiert sind
Sind sie ja auch nicht ... wie ich schon schrieb: initialisiere sie mit 0.0 !!

Was mich nur irritiert, dass es dann bei Deinem Code nicht passiert ...
DAFÜR sollte das TRY eigentlich egal sein ...

Gruß
Klaus
 

ChrisB.

Mitglied
Die Finalversion nun (ich hoffe es, zumindest klappt sie genauso wie ich das will :D)

Java:
  public void btn_calc_ActionPerformed(ActionEvent evt) 
  {
    if(!nf_a.getText().equals("") && !nf_b.getText().equals("") && !nf_c.getText().equals(""))
    {
      
      double a,b,c,x1,x2,D;
      
      a = 0.0;
      b = 0.0;
      c = 0.0;
      
      try
      { 
        
        a = nf_a.getDouble();
        b = nf_b.getDouble();
        c = nf_c.getDouble();
      }
      catch( Exception ex )
      {
        ex.printStackTrace();
      }   
      
      
      lb_function.setText(a+" x² * "+b+" x * "+c);        
      
      if (a != 0) 
      {
        D = b*b - 4*a*c;
        nf_D.setDouble(D);
        
        if (D < 0) 
        {
          ta_nachricht.setText("Die Quadratwurzel der Lösungsformel\nim Körper "+
          "der reellen Zahlen ist \nnicht definiert. "+
          "Es existiert also keine\nreelle Lösung!");  
        }
        else if (D == 0)
        {
          x1 = -b/(2*a);
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x1);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt eine\nDoppellösung!"); 
        }
        else
        {
          x1 = (-b+Math.sqrt(D))/(2*a) ;
          x2 = (-b-Math.sqrt(D))/(2*a) ;
          nf_x1.setDouble(x1);
          nf_x2.setDouble(x2);
          ta_nachricht.setText("Rechnung Erfolgreich!\nDie Gleichung besitzt zwei Lösungen!");
        }
      }
      else
      {
        nf_a.clear();
        ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nDer Koeffzient von a muss ungleich\nnull sein!");
      } 
    }
    else 
    {
      ta_nachricht.setText("Achtung! - Eingabe überprüfen!\nFelder dürfen nicht leer sein!");
    }
  }
 

VfL_Freak

Top Contributor
Moin,

na, das hoffen wir auch ;)

Und wenn schon, dann würde ich doch gleich ALLE Variablen initialisieren :)

Java:
double a,b,c,x1,x2,D = 0.0;

Gruß
Klaus
 

ChrisB.

Mitglied
Anscheinend funktioniert das nur bei dir, weil bei mir kommt das alte Spiel wieder, das die nicht Initialisiert wurden, wenn ich das so mache wie du ;D.

edit: Sprachfehler heute :bloed:
 
Zuletzt bearbeitet:

ry_void

Mitglied
Das liegt daran das bei der Schreibweise

Java:
double a,b,c,x1,x2,D = 0.0;

nur "D" initialisiert wird.

Um alle zu initialisieren dann eher so:

Java:
double  a = 0.0,
                b = 0.0,
                c = 0.0,
                d = 0.0;
 

VfL_Freak

Top Contributor
Moin,

Das liegt daran das bei der Schreibweise
Java:
double a,b,c,x1,x2,D = 0.0;
nur "D" initialisiert wird.
Um alle zu initialisieren dann eher so:
Java:
double  a = 0.0,
                b = 0.0,
                c = 0.0,
                d = 0.0;
Oh, stimmt - habe es gerade mal schnell getestet
Na gut, ich brauche sowas eher nicht ... das ist dann bei Java wohl anders als bei C/C++ :)

Gruß
Klaus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R If Abfragen Problem! Java Basics - Anfänger-Themen 4
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
ven000m Bitcoin Blockhöhe abfragen Java Basics - Anfänger-Themen 12
S If abfragen (+, - , /, *) Java Basics - Anfänger-Themen 13
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
M Checkbox abfragen und Radiobutton Group zurücksetzen Java Basics - Anfänger-Themen 1
L Datenpaare abfragen Java Basics - Anfänger-Themen 11
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
B Serial port abfragen Java Basics - Anfänger-Themen 18
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
E Abfragen des SimpleDateFormats Java Basics - Anfänger-Themen 1
L int array abfragen Java Basics - Anfänger-Themen 16
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
T if abfragen verkürzen Java Basics - Anfänger-Themen 5
M Wo Hilfsvariablen abfragen? Java Basics - Anfänger-Themen 1
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
M Frage nach BestPractice in if-Abfragen Java Basics - Anfänger-Themen 1
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
R IF Abfragen Java Basics - Anfänger-Themen 8
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
I Drei booleans abfragen Java Basics - Anfänger-Themen 2
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
A Vokabel abfragen Java Basics - Anfänger-Themen 3
R Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern Java Basics - Anfänger-Themen 4
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
H if abfragen Java Basics - Anfänger-Themen 38
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
B mehrere Abfragen zusammenfügen Java Basics - Anfänger-Themen 3
H durch Schleife 50 Variablen abfragen Java Basics - Anfänger-Themen 8
B If abfragen! Java Basics - Anfänger-Themen 9
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
P länge von array abfragen? Java Basics - Anfänger-Themen 2
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
T jNumberField auf null abfragen Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
H Checkboxstatus abfragen Java Basics - Anfänger-Themen 10
S unzulässigen Wert abfragen - aber wo Java Basics - Anfänger-Themen 3
eLogic Aktive Internetverbindung abfragen Java Basics - Anfänger-Themen 21
B Abfragen eines Preises.. Java Basics - Anfänger-Themen 20
D Touchpad abfragen?! Java Basics - Anfänger-Themen 9
D Abfragen ob Excel-Dateien Makros enthalten? Java Basics - Anfänger-Themen 4
B Abfragen eines Excel-Feldes auf null Java Basics - Anfänger-Themen 17
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
M Datentypen String mit Trennzeichen abfragen Java Basics - Anfänger-Themen 7
D GUI Checkboxen in allen Klassen abfragen? Java Basics - Anfänger-Themen 5
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
M Double.NaN abfragen Java Basics - Anfänger-Themen 6
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
H Objecttyp abfragen... Java Basics - Anfänger-Themen 11
N Zeilenanzahl einer TXT abfragen..? Java Basics - Anfänger-Themen 11
S Bremsen 3 IF-Abfragen ein Programm? Java Basics - Anfänger-Themen 7
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
S Absatz aus Textdokument abfragen Java Basics - Anfänger-Themen 6
B gedrückte Tasten abfragen Java Basics - Anfänger-Themen 11
L "unschöne" if-Abfragen Java Basics - Anfänger-Themen 4
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
P Pixelfarbe abfragen Java Basics - Anfänger-Themen 8
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
S if-Abfragen bringen mich zum VERZWEIFELN! Java Basics - Anfänger-Themen 12
B Aus JTable ImageIcon abfragen Java Basics - Anfänger-Themen 8
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
D jeditorpane checkbox abfragen? Java Basics - Anfänger-Themen 7
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
G If Abfragen Java Basics - Anfänger-Themen 3
T Variablen Classübergreifen abfragen Java Basics - Anfänger-Themen 6
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
M Status von ext. Programm abfragen Java Basics - Anfänger-Themen 2
G [Applet] Mauskkoodinaten abfragen Java Basics - Anfänger-Themen 3
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
T String splitten und auf fehler abfragen Java Basics - Anfänger-Themen 3
V thread, variable abfragen Java Basics - Anfänger-Themen 14
F Abfragen aber wie ? Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
V .jar macht keine Datenbank abfragen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben