Mehrere Textfelder überprüfen

Jinnai4

Mitglied
Hallo !
Bin seit ein paar tagen dabei mir ein paar Kenntnisse über Java anzueignen und versuche
mir ein Programm zu schreiben, welches mir meine Arbeit erleichtert.
Leider kann ich keine passende Lösung finden und dachte deshalb ich bitte euch mal um Hilfe.
Mein Problem ist das bei fehlender Eingabe der erforderlichen Werte ein Message Fenster geöffnet werden soll, welches angibt welche Werte Fehlen.
z.B.: ich möchte Wärmemenge ausrechnen, brauche dafür Masse und Temperaturdifferenz,
Masse ist nicht eingetragen, ich drücke auf den Button und hätte gerne das im Infofenster steht das die Masse eingetragen werden muss.
Vorher war mein Problem ,dass das zwar so funktioniert hat, aber das Textfeld 3 mal erschienen ist, da ich dasselbe auch bei anderen Buttons eingetragen habe.
Jetzt hab ich das so gelöst:
Java:
package at.psycho;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Wärme extends javax.swing.JFrame implements ActionListener

{
private static final long serialVersionUID = 1L;

private Toolkit t;
private int x = 0, y = 0, width = 850, height = 400;


private JMenuBar bar1;
private JMenu bar1_menu1;
private JMenuItem bar1_menu1_menuitem1;
private JMenuItem bar1_menu1_menuitem2;

private JTextField tq = new JTextField();
private JTextField tm = new JTextField();
private JTextField tdt = new JTextField();
private JTextField terg = new JTextField();
private JTextField tkw = new JTextField();
private JTextField tz = new JTextField();

private JLabel lq = new JLabel("Wärmemenge (W/h)");
private JLabel lm = new JLabel("Masse (kg)");
private JLabel ldt = new JLabel("Temperaturdifferenz (K)");
private JLabel lz = new JLabel("Aufheizzeit (min)");
private JLabel lerg = new JLabel("Ergebnis");
private JLabel lkw = new JLabel("Benötigte Leistung");


private JButton bq = new JButton("Q");  
private JButton bm = new JButton("M");
private JButton bdt = new JButton("K");
private JButton bz = new JButton("Z");
private JButton btDel = new JButton("Löschen");
private JButton bkw = new JButton("B");


    public static void main(String[] args)
    {
        new Wärme();
    }

    public void actionPerformed(ActionEvent event)
    {
        double var1,var2,var3,var4;
        Object obj = event.getSource();
      
        if (obj == bq)      
            if (tm.getText().equals("") || tdt.getText().equals(""))
            {
                JOptionPane.showMessageDialog(null, "Bitte einen Wert bei \"Masse\" und \"Temperaturdifferenz\" eintragen!");
            }          
            else              
            {                
                var2 = Double.parseDouble(tm.getText());
                var3 = Double.parseDouble(tdt.getText());
          
                var1 = (var2/(var3*1.163)); //
                var1 = Math.round(var1*100)/100.0;
                terg.setText(""+var1+" kg");              
            }          
      
        if (obj == btDel)          
        {
            tq.setText("");
            tm.setText(""); 
            tdt.setText("");
            tz.setText("");
            terg.setText("");
            tkw.setText("");
        }  
    }
  
    private void initComponents()  
    {      
    this.getContentPane().setLayout(null);
      
    this.bar1 = new JMenuBar();
  
    this.bar1_menu1 = new JMenu("Ansicht");  
    this.bar1_menu1_menuitem1 = new JMenuItem("Entwickler");
    this.bar1_menu1_menuitem2 = new JMenuItem("Bedienung");
    this.setJMenuBar(this.bar1);
  
    this.bar1_menu1.add(this.bar1_menu1_menuitem1);
    this.bar1.add(this.bar1_menu1);
    this.bar1_menu1.add(this.bar1_menu1_menuitem2); 
    }
     
    public Wärme()  
    {
        super("Wärme");
        Container cp = getContentPane();
        cp.setLayout(null);
      
        Image image = Toolkit.getDefaultToolkit().getImage("psychoicon.png");
        setIconImage(image);
      
      
        setVisible(true);

      
        t = Toolkit.getDefaultToolkit();
      
        Dimension d = t.getScreenSize();
        x = (int) ((d.getWidth() - width) / 2);
        y = (int) ((d.getHeight() - height) / 2);
      
        setTitle("Berechnung");
        setBounds(x, y, width, height);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
        this.initComponents();
        this.intitListeners();
      
        setVisible(true);
      
      
        lq.setBounds(120,10,160,20); 
        tq.setBounds(120,27,120,20);
      
        lm.setBounds(320,10,120,20); 
        tm.setBounds(320,27,120,20);
      
        lz.setBounds(320,52,120,20); 
        tz.setBounds(320,69,120,20);
      
        ldt.setBounds(520,10,180,20); 
        tdt.setBounds(520,27,120,20);
      
        lerg.setBounds(120,257,160,20); 
        terg.setBounds(120,274,160,20);
        terg.setEditable(false);   
      
        lkw.setBounds(520,257,160,20); 
        tkw.setBounds(520,274,160,20);
        tkw.setEditable(false);
      
        bq.setBounds(120,120,50,20);
        bm.setBounds(170,120,50,20);
        bdt.setBounds(220,120,50,20);
        bz.setBounds(120,150,100,20);
        btDel.setBounds(120,200,200,20);
        bkw.setBounds(270,120,50,20);
      
      
      
        cp.add(lq);
        cp.add(tq);
      
        cp.add(lm);
        cp.add(tm);
      
        cp.add(ldt);
        cp.add(tdt);
      
        cp.add(lerg);
        cp.add(terg);
      
        cp.add(lz);
        cp.add(tz);
      
        cp.add(lkw);
        cp.add(tkw);
      
        cp.add(bq);
        cp.add(bm);
        cp.add(bdt);
        cp.add(bz);
        cp.add(btDel);
        cp.add(bkw);
      
        bq.addActionListener(this);
        bm.addActionListener(this);
        bdt.addActionListener(this);
        bz.addActionListener(this);
        btDel.addActionListener(this);
        bkw.addActionListener(this);
       
       tq.setInputVerifier(new InputVerifier()
       {
           public boolean verify(JComponent input)
           {
               String str = ((JTextField) input).getText();
               if (str.equals(""))
                   return true;
                  return str.matches("[0-9]*");
           }
       });
      
       tm.setInputVerifier(new InputVerifier()
       {
           public boolean verify(JComponent input)
           {
               String str = ((JTextField) input).getText();
               if (str.equals(""))
                   return true;
                  return str.matches("[0-9]*");
           }
       });
      
       tdt.setInputVerifier(new InputVerifier()
       {
           public boolean verify(JComponent input)
           {
               String str = ((JTextField) input).getText();
               if (str.equals(""))
                   return true;
                  return str.matches("[0-9]*");
           }
       });
      
       tz.setInputVerifier(new InputVerifier()
       {
           public boolean verify(JComponent input)
           {
               String str = ((JTextField) input).getText();
               if (str.equals(""))
                   return true;
                  return str.matches("[0-9]*");
           }
       });
    }
  
    private void intitListeners()  
        {  
        this.bar1_menu1_menuitem1.addActionListener(new ActionListener()
            {          
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "Jakob R.\n August 2016"); 
        }
            }
                                                    );
      
        this.bar1_menu1_menuitem2.addActionListener(new ActionListener()
        {
      
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "Füllen Sie die bekannten Werte aus.\n Drücken Sie auf den zu berechnenden Wert.\n Im \"Ergebnis-Feld\" wird der zu berechnende Wert ausgegeben");
          
    }
        }
                                                );
        }
}
Wäre das so möglich wie ich mir das vorstelle?
Danke
mit freundlichen Grüßen
 
Zuletzt bearbeitet von einem Moderator:

Meniskusschaden

Top Contributor
Du könntest die Felder einzeln prüfen und bei jedem leeren Feld den Feldnamen an einen Meldungsstring anhängen. Zum Schluß prüfst du, ob der Meldungsstring leer ist und führst entweder die Berechnung durch oder gibst den Meldungsstring aus, der dann einen oder mehrere Feldnamen enthält.
 

Jinnai4

Mitglied
Du könntest die Felder einzeln prüfen und bei jedem leeren Feld den Feldnamen an einen Meldungsstring anhängen. Zum Schluß prüfst du, ob der Meldungsstring leer ist und führst entweder die Berechnung durch oder gibst den Meldungsstring aus, der dann einen oder mehrere Feldnamen enthält.
Danke für die schnelle Antwort!
Wie würde ich das in meinem Fall am besten umsetzen?
Habe gerade ein bisschen über deine Lösung gegoogelt und bin auf einen "catch block" gestossen.
 

Jardcore

Top Contributor
Ein anderer Vorschlag wäre, deine Textfelder in eine Map zu referenzieren und diese einmal bei der Prüfung durchzugehen. Die Map wäre sowas wie Map<Textfield, Prüfung>.
Wie eine Pruefung jetzt genau aussieht musst du natürlich entscheiden. Hier erstmal ein reiner String Vergleich.
Java:
public boolean isInputValid(Map<JTextField , Pruefung> textfields, JTextField textArea) {

    boolean inputIsValid = true;

    for(Entry<JTextField , Prüfung> entry : textfields) {
        final JTextField textfield = entry.key();
        final Pruefung pruefung = entry.value();
        final pruefungIsValid = pruefung.valid();

        inputIsValid &= pruefungIsValid;

        if(!pruefungIsValid) {
            textArea.add("Something here");
            // Färbe Textfeld rot, usw.
        }
    }

    return inputIsValid;
}
Java:
public class Pruefung {
    private String criteria;

    public Pruefung(JTextField textfield, String criteria) {
        this.textfield = textfield;
        this.criteria = criteria;
    }

    public boolean valid() {
        return criteria == textfield.getText();
    }
}
 

Jinnai4

Mitglied
Ein anderer Vorschlag wäre, deine Textfelder in eine Map zu referenzieren und diese einmal bei der Prüfung durchzugehen. Die Map wäre sowas wie Map<Textfield, Prüfung>.
Wie eine Pruefung jetzt genau aussieht musst du natürlich entscheiden. Hier erstmal ein reiner String Vergleich.
Java:
public boolean isInputValid(Map<JTextField , Pruefung> textfields, JTextField textArea) {

    boolean inputIsValid = true;

    for(Entry<JTextField , Prüfung> entry : textfields) {
        final JTextField textfield = entry.key();
        final Pruefung pruefung = entry.value();
        final pruefungIsValid = pruefung.valid();

        inputIsValid &= pruefungIsValid;

        if(!pruefungIsValid) {
            textArea.add("Something here");
            // Färbe Textfeld rot, usw.
        }
    }

    return inputIsValid;
}
Java:
public class Pruefung {
    private String criteria;

    public Pruefung(JTextField textfield, String criteria) {
        this.textfield = textfield;
        this.criteria = criteria;
    }

    public boolean valid() {
        return criteria == textfield.getText();
    }
}
Danke sehr :)
Mit dem komm ich leider überhaupt nicht klar xD
 

Jinnai4

Mitglied
Danke nochmal für eure Lösungsvorschläge, habe es jetzt so gelöst:
Code:
{
   
        double var1,var2;
        Object obj = event.getSource(); 
       
        String getq = tq.getText().toString();
        String getm = tm.getText().toString();
        String getdt = tdt.getText().toString();
        String getqn = tqn.getText().toString();
        String getz = tz.getText().toString();
       
       
        if (obj == bq)       
         
            {
                   
                        {
                           
                        if (getm.isEmpty())
                           
                                {
                            JOptionPane.showMessageDialog(null,
                                   "Kein Wert bei \"Masse\" eingegeben",
                                   "Fehlender Wert",
                                   JOptionPane.ERROR_MESSAGE);

                                }
                   
                   
                        else if (getdt.isEmpty())
                       
                                {
                            JOptionPane.showMessageDialog(null,
                                   "Kein Wert bei \"Temperaturdifferenz\" eingegeben",
                                   "Fehlender Wert",
                                   JOptionPane.ERROR_MESSAGE);

                                }
                       
                        else
       
                    {
                        var1 = Double.parseDouble(tm.getText()); 
                        var2 = Double.parseDouble(tdt.getText());
       
                        var1 = var1*1.163*var2;
                        var1 = Math.round(100.0 * var1) / 100.0;
                        terg.setText(""+var1+" Wh"); 
                    }
                   
                   
                        }
            }
       
        if (obj == bm)       
       
        {
            {
            if (getq.isEmpty())
               
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
       
       
            else if (getdt.isEmpty())
           
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Temperaturdifferenz\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
           
            else
       
                    {
                    var1 = Double.parseDouble(tq.getText()); 
                    var2 = Double.parseDouble(tdt.getText());
       
                    var1 = var1/(1.163*var2);
                    var1 = Math.round(100.0 * var1) / 100.0;
                    terg.setText(""+var1+" kg"); 
                    }
           
            }
        }
           
       
        if (obj == bdt)       
       
        {
            {
            if (getq.isEmpty())
               
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
       
       
            else if (getm.isEmpty())
           
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Masse\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
           
            else
       
                    {
   
                    var1 = Double.parseDouble(tq.getText()); 
                    var2 = Double.parseDouble(tm.getText());
       
                    var1 = var1/(1.163*var2);
                    var1 = Math.round(100.0 * var1) / 100.0;
                    terg.setText(""+var1+" K");
                    }
            }
        }

       
        if (obj == bkw)       
       
        {
            {
            if (getq.isEmpty())
               
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
       
       
            else if (getz.isEmpty())
           
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Zeit\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
           
            else
       
                    {
                    var1 = Double.parseDouble(tq.getText()); 
                    var2 = Double.parseDouble(tz.getText());
       
                    var1 = ((var1*60)/var2)/1000;
                    var1 = Math.round(100.0 * var1) / 100.0;
                    tkw.setText(""+var1+" kWh");
                    }
            }
        }
           
        if (obj == bz)       
           
        {
            {
            if (getq.isEmpty())
               
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
       
       
            else if (getm.isEmpty())
           
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Neue Leistung\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);

                    }
           
            else
               
                    {
                    var1 = Double.parseDouble(tq.getText()); 
                    var2 = Double.parseDouble(tqn.getText());
           
       
                    var1 = (60*var1)/var2;
                    var1 = Math.round(1.0 * var1) / 1.0;
                    terg.setText(""+var1+" min");
                    }
            }
        }
           
           
       
        if (obj == btDel)
           
        {
            tq.setText("");
            tqn.setText("");
            tm.setText("");  
            tdt.setText("");
            tz.setText("");
            terg.setText("");
            tkw.setText("");
        }
   
    }

und zur Zeit scheint alles so zu funktionieren wie ich das wollte :D
 

Meniskusschaden

Top Contributor
Wie würde ich das in meinem Fall am besten umsetzen?
Ich hatte etwas in der Art gemeint:
Java:
        if (obj == bq) {
            String fehlerText = "";
            if (tm.getText().isEmpty()) { fehlerText += "\nMasse"; }
            if (tdt.getText().isEmpty()) { fehlerText += "\nTemperaturdifferenz"; }
            if (!fehlerText.isEmpty()) {
                JOptionPane.showMessageDialog(null,    "Bitte folgende Werte eintragen:" + fehlerText);
            } else { ...
Dann erscheint nur eine JOptionPane, die aber alle fehlerhaften Felder anzeigt.
Habe gerade ein bisschen über deine Lösung gegoogelt und bin auf einen "catch block" gestossen.
Ja, du kannst die parseDouble-Operation in einen try-Block legen und mit catch die NumberFormatException abfangen. Damit bekommst du auch das Problem in den Griff:
Außer das das Programm crasht, wenn ich Buchstaben eingebe und bestätige xD
 

Jardcore

Top Contributor
Ja, du kannst die parseDouble-Operation in einen try-Block legen und mit catch die NumberFormatException abfangen. Damit bekommst du auch das Problem in den Griff:
Exceptions sind Ausnahmebehandlung und sollten auch nur für Fehlerfälle benutzt werden. Wenn man hier die NumberFormatException abfängt und dann im catch block den Fehler ignoriert ist das schlechter Stil.
Außer das das Programm crasht, wenn ich Buchstaben eingebe und bestätige xD
Du solltest vorher prüfen ob dein String auch so ist wie er sein soll, z.B. durch einen regulären Ausdruck und erst dann Parsen. Dann hast du auch nicht das Problem das du unbedingt die Exception abfangen musst.
Java:
String regularExpressionForDouble = "^[-+]?[0-9]*\.?[0-9]+$";
if(text.match(regularExpressionForDouble) {
    textAsDouble = Double.parseDouble(text);
}
 

Meniskusschaden

Top Contributor
Exceptions sind Ausnahmebehandlung und sollten auch nur für Fehlerfälle benutzt werden. Wenn man hier die NumberFormatException abfängt und dann im catch block den Fehler ignoriert ist das schlechter Stil.
Von Ignorieren war auch nicht die Rede. Es geht hier doch gerade darum, eine adäquate Fehlermeldung auszugeben. Die NumberFormatException leistet an der Stelle genau das, was man braucht. Deshalb würde ich es nicht sofort aus "ideologischen" Gründen verwerfen.;) Warum soll ich etwas anderes erfinden, wenn es bereits etwas funktionierendes gibt?
Du solltest vorher prüfen...
Es spricht nichts dagegen, es vorher zu prüfen. Das ist aber kein zwingendes Argument gegen die Exception. Man kann ja auch ein parseDouble() mit catch-Block in die Gültigkeitsprüfung integrieren.
Du solltest vorher prüfen ob dein String auch so ist wie er sein soll, z.B. durch einen regulären Ausdruck und erst dann Parsen. Dann hast du auch nicht das Problem das du unbedingt die Exception abfangen musst.
Dann bleibt aber die Frage, ob man im Sinne einer defensiven Programmierung nicht trotzdem die Exception fangen sollte. Reguläre Ausdrücke können leicht unübersichtlich werden, so daß sich schnell Fehler einschleichen.
 

Jardcore

Top Contributor
Die Exception muss aber leider genauso geprüft werden, also um den Test kommst du nicht drum herum.
Das heißt jetzt steht nur noch RegEx gegen Exception. Und das ist witziger weise ein spannendes Thema.
Hier kommt es vor Allem auch auf die Firmen Konventionen an. Wenn deine Firma keine Logik in einem catch Teil haben möchte wird dir dein Reviewer auf die Finger kloppen (So ist das bei mir). Exceptions sind bei uns unerwartete Fehler die auftauchen können und die geloggt werden. Eine falsche Eingabe kann man aber im Voraus schon erahnen und deshalb schon vorher dafür sorgen das diese behandelt wird.
 

Jinnai4

Mitglied
So habe mich jetzt ein bisschen damit beschäftigt und es so gelöst, hoffe so habt ihr das gemeint und es ist richtig so :

Code:
        if (obj == bq) 
            {
                    try
                    {
                        if (getm.isEmpty())
                                {
                            JOptionPane.showMessageDialog(null,
                                   "Kein Wert bei \"Masse\" eingegeben",
                                   "Fehlender Wert",
                                   JOptionPane.ERROR_MESSAGE);
                                }
                        else if (getdt.isEmpty())
                                {
                            JOptionPane.showMessageDialog(null,
                                   "Kein Wert bei \"Temperaturdifferenz\" eingegeben",
                                   "Fehlender Wert",
                                   JOptionPane.ERROR_MESSAGE);
                                }
                        else
                    {
                        var1 = Double.parseDouble(tm.getText());
                        var2 = Double.parseDouble(tdt.getText());
                        var1 = var1*1.163*var2;
                        var1 = Math.round(100.0 * var1) / 100.0;
                        terg.setText(""+var1+" Wh");
                    }
                    }
                        catch(NumberFormatException ex)
                        {
                        JOptionPane.showMessageDialog(null,
                        "Keine zulässige Zahl",
                        "Fehler",
                        JOptionPane.ERROR_MESSAGE);
                        }
        }
        if (obj == bm) 
        {
            try
            {
            if (getq.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else if (getdt.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Temperaturdifferenz\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else
                    {
                    var1 = Double.parseDouble(tq.getText());
                    var2 = Double.parseDouble(tdt.getText());
      
                    var1 = var1/(1.163*var2);
                    var1 = Math.round(100.0 * var1) / 100.0;
                    terg.setText(""+var1+" kg");
                    }
            }
            catch(NumberFormatException ex)
                    {
                    JOptionPane.showMessageDialog(null,
                    "Keine zulässige Zahl",
                    "Fehler",
                    JOptionPane.ERROR_MESSAGE);
                    }
        }
        if (obj == bdt) 
        {
            try
            {
            if (getq.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else if (getm.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Masse\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else
                    {
                    var1 = Double.parseDouble(tq.getText());
                    var2 = Double.parseDouble(tm.getText());
      
                    var1 = var1/(1.163*var2);
                    var1 = Math.round(100.0 * var1) / 100.0;
                    terg.setText(""+var1+" K");
                    }
            }
            catch(NumberFormatException ex)
                    {
                    JOptionPane.showMessageDialog(null,
                    "Keine zulässige Zahl",
                    "Fehler",
                    JOptionPane.ERROR_MESSAGE);
                    }
        }
        if (obj == bkw) 
        {
            try
            {
            if (getq.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else if (getz.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Zeit\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else
                    {
                    var1 = Double.parseDouble(tq.getText());
                    var2 = Double.parseDouble(tz.getText());
      
                    var1 = ((var1*60)/var2)/1000;
                    var1 = Math.round(100.0 * var1) / 100.0;
                    tkw.setText(""+var1+" kWh");
                    }
            }
            catch(NumberFormatException ex)
                    {
                    JOptionPane.showMessageDialog(null,
                    "Keine zulässige Zahl",
                    "Fehler",
                    JOptionPane.ERROR_MESSAGE);
                    }
        }
        if (obj == bz) 
        {
            try
            {
            if (getq.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Wärmemenge\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else if (getqn.isEmpty())
                    {
                    JOptionPane.showMessageDialog(null,
                    "Kein Wert bei \"Neue Leistung\" eingegeben",
                    "Fehlender Wert",
                    JOptionPane.ERROR_MESSAGE);
                    }
            else
                    {
                    var1 = Double.parseDouble(tq.getText());
                    var2 = Double.parseDouble(tqn.getText());
           
                    var1 = (60*var1)/var2;
                    var1 = Math.round(1.0 * var1) / 1.0;
                    terg.setText(""+var1+" min");
                    }
            }
            catch(NumberFormatException ex)
                    {
                    JOptionPane.showMessageDialog(null,
                    "Keine zulässige Zahl",
                    "Fehler",
                    JOptionPane.ERROR_MESSAGE);
                    }
        }

Danke nochmals für die Hilfe, ist alles ziemlich verwirrend, aber sehr interessant :D
 
Zuletzt bearbeitet von einem Moderator:

Jardcore

Top Contributor
Ich sag nur Spagetti Code.
Benutze am besten eine ordentliche Formatierung und .. Variablen können auch ansprechende Namen haben. var1, obj, bz, bkw, bdt ...WTF! Versuche deine Logik in Methoden auszulagern.
Als Grundregel gilt: Unter einer If-Bedingung sollte nicht mehr als 2-5 Zeilen Code stehen. Eine Methode sollte nicht länger als 20 Zeilen sein und immer nur eine Aufgabe haben.

obj soll wohl Objekt heißen... aber was für ein Objekt, wozu ist es da, wo kommt es her, was soll damit gemacht werden?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Mehrere Textfelder zusammenfassen Java Basics - Anfänger-Themen 4
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 7
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
Buroto Klassen Mehrere .txt Datein verbienden und anschließend auslisten Java Basics - Anfänger-Themen 10
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
M mehrere Rückgabenwerte aus Methode Java Basics - Anfänger-Themen 7
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
B Methoden Mehrere ähnliche Methoden zusammenfassen Java Basics - Anfänger-Themen 24
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
C Mehrere Zufallswerte Java Basics - Anfänger-Themen 4
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
E Mehrere Arrays addieren mit Übertrag Java Basics - Anfänger-Themen 13
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
L Mehrere Jars im Unterordner Java Basics - Anfänger-Themen 2
L LibGDX - mehrere Screens Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
T Mehrere JFrames gleichzeitig öffnen Java Basics - Anfänger-Themen 6
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
B Mehrere Zahlen speichern Java Basics - Anfänger-Themen 60
M mehrere extends? Java Basics - Anfänger-Themen 19
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
C ButtonController löst mehrere Methoden aus Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Mehrere Eingabefelder programmiert (Zeigt Fehler an) Java Basics - Anfänger-Themen 6
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
D Mehrere Objekte in ein Objekt zusammenfassen Java Basics - Anfänger-Themen 16
D Input/Output Mehrere Befehle nacheinander ausführen Java Basics - Anfänger-Themen 20
K Mehrere Objekte anlegen Java Basics - Anfänger-Themen 23
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
A Mehrere Radiobuttons Java Basics - Anfänger-Themen 3
B Klassen Mehrere Objekte mit Schleife erstellen - How? Java Basics - Anfänger-Themen 1
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
V OOP Aufnahme von Dreiecken in ein/mehrere Objekte Java Basics - Anfänger-Themen 0
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
C Klasse auf mehrere Objekte zugreifen lassen Java Basics - Anfänger-Themen 26
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
K Mehrere String.valueOf() kürzer schreiben / "packen"? Java Basics - Anfänger-Themen 2
F String mehrere male ausgeben? Java Basics - Anfänger-Themen 4
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
H möglichkeiten für for-schleife? (mehrere ausgangsvariablen?) Java Basics - Anfänger-Themen 9
M PdfBox - mehrere Formularseiten Java Basics - Anfänger-Themen 2
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
F Methoden split() - Mehrere Zeichen Java Basics - Anfänger-Themen 5
F Erste Schritte Mehrere nextInt() Eingaben nebeneinander ausgeben Java Basics - Anfänger-Themen 12
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
T Compiler-Fehler Mit Array und "for" mehrere ImageIcon erstellen Java Basics - Anfänger-Themen 7
N Mehrere berechnungen auf einem Button legen? Java Basics - Anfänger-Themen 19
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
M Mehrere Variabeln zusammenfassen Java Basics - Anfänger-Themen 4
M Erste Schritte mehrere Objekte aus einer Klasse Java Basics - Anfänger-Themen 4
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben