java:2 bedingungen abprüfen?!

bluex

Ensign
Dabei seit
Juni 2004
Beiträge
143
hallo,

ich programmiere eben einen "benzinkostenrechner".
funktionen tut das prg. problemlos bis auf die fehlerabfrage.

also erstes möchte ich prüfen ob die km-stände alles zahlen sind, diese überprüfung klappt problemlos. was probleme macht ist die üvberprüfung, ob km-stand alt größer ist als km-stand neu.

hier mal ein prg.-ausschnitt

Code:
    // globale Variablen definiert
    
    double j=0,l=0,m=0;
    
    public void jButton1_actionPerformed(ActionEvent e) {
        double a,b,c,f,g,h,k;
                
        a = Integer.parseInt(jTextField1.getText());
        b = Integer.parseInt(jTextField2.getText());
        c = Integer.parseInt(jTextField3.getText());
     
        
        try {
                               
        
              // Berechnung
        
                f = b-a;
                g = (c/f)*100;
                h = c*1.35;
                j = j+h;
                l = l+c;
                m = m+f;
                k = (l/m)*100;
        
                // Ausgabe
        
                jTextField4.setText(String.valueOf(f));
                jTextField5.setText(String.valueOf(g));
                jTextField6.setText(String.valueOf(h));
                jTextField7.setText(String.valueOf(j));
                jTextField8.setText(String.valueOf(k));
            }
            
            catch
                    (NumberFormatException d)
            {
                JOptionPane msg = new JOptionPane();
                JOptionPane.showMessageDialog (msg,"falsche Eingabe","Eingabe prüfen",
                JOptionPane.ERROR_MESSAGE);

            }
            

}
}

gibts ne möglichkeit über das catch nochmal zu gehen sprich

catch
(b<a d)

??fakt ist, dass die erste überprüfung obs ne zahl ist zuerst sein muss. nun ist halt die frage, wie man die überprüfung einbaut kmstand neu > alt.
dabei muss ja auch die berechnung abgebrochen werden, was ja bei der bisherigen catch prüfung wunderbar klappt.

hoffentlich kann mir jemand helfen...vielen dank!
 

bluex

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
143
Code:
catch    (w) {
                
           if (b<a) 
            
            {
                    JOptionPane msg = new JOptionPane();
                    JOptionPane.showMessageDialog (msg,"bah :)","Eingabe prüfen",
                    JOptionPane.ERROR_MESSAGE);
            }
            }
und wenn ich sowas noch hinten an die catch setzte funzts leider auch nicht :( *verzweifelt sei*
 
M

mcflash99

Gast
Mal schauen ob ich das richtig verstanden habe:

Du willst wenn b<a ist die Berechnung verlassen und in den catch-block springen.

das würde so gehen:

if (b<a) throw new Exception("errormessage");
 

bluex

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
143
vielen dank für die hilfe, hat bestens geklappt.

irgendwie will das runden der ausgabewerte nicht recht klappen :(
die biliothek ist eingebunden und die syntax passt auch *wunder*



package uebung_1_benzinverbrauch;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.JLabel;
import java.awt.*;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import java.lang.*;

/**
* <p>Überschrift: </p>
*
* <p>Beschreibung: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Organisation: </p>
*
* @author unbekannt
* @version 1.0
*/
public class Frame1 extends JFrame {
JPanel contentPane;
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JTextField jTextField3 = new JTextField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JPanel jPanel1 = new JPanel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
JLabel jLabel7 = new JLabel();
JLabel jLabel8 = new JLabel();
JLabel jLabel9 = new JLabel();
JLabel jLabel10 = new JLabel();
JTextField jTextField4 = new JTextField();
JTextField jTextField5 = new JTextField();
JTextField jTextField6 = new JTextField();
JTextField jTextField7 = new JTextField();
JTextField jTextField8 = new JTextField();

public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}

/**
* Initialisierung der Komponenten.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
this.getContentPane().setBackground(UIManager.getColor(
"InternalFrame.activeTitleGradient"));
setSize(new Dimension(410, 340));
setTitle("Berechnung Benzinverbrauch");
jLabel1.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 15));
jLabel1.setText("Berechnung des Benzinverbrauchs");
jLabel1.setBounds(new Rectangle(9, 0, 405, 30));
jLabel2.setToolTipText("");
jLabel2.setText("Km-Stand alt");
jLabel2.setBounds(new Rectangle(9, 46, 80, 20));
jLabel3.setText("Km-Stand neu");
jLabel3.setBounds(new Rectangle(10, 72, 80, 20));
jLabel4.setText("getankte Menge");
jLabel4.setBounds(new Rectangle(9, 102, 80, 20));
jTextField1.setToolTipText("km");
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(138, 45, 100, 20));
jTextField2.setToolTipText("km");
jTextField2.setText("");
jTextField2.setBounds(new Rectangle(139, 73, 100, 20));
jTextField3.setToolTipText("l");
jTextField3.setText("");
jTextField3.setBounds(new Rectangle(139, 103, 100, 20));
jButton1.setBounds(new Rectangle(285, 43, 104, 40));
jButton1.setText("Berechnung");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(285, 81, 104, 40));
jButton2.setText("Ende");
jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));
jPanel1.setBounds(new Rectangle(5, 135, 393, 174));
jPanel1.setLayout(null);
jLabel5.setToolTipText("");
jLabel5.setText("Ergebnisse:");
jLabel5.setBounds(new Rectangle(1, 0, 61, 15));
jLabel6.setText("gefahrene Strecke");
jLabel6.setBounds(new Rectangle(6, 22, 100, 20));
jLabel7.setText("Durchschnittsverbrauch");
jLabel7.setBounds(new Rectangle(5, 47, 136, 20));
jLabel8.setText("Kosten Einzelfahrt");
jLabel8.setBounds(new Rectangle(6, 75, 127, 25));
jLabel9.setText("Gesamtkosten");
jLabel9.setBounds(new Rectangle(4, 101, 73, 25));
jLabel10.setText("Benzindurchschnitt \u03A3");
jLabel10.setBounds(new Rectangle(6, 133, 128, 17));
jTextField4.setToolTipText("km");
jTextField4.setText("");
jTextField4.setBounds(new Rectangle(134, 24, 100, 20));
jTextField5.setToolTipText("l/100km");
jTextField5.setText("");
jTextField5.setBounds(new Rectangle(134, 50, 100, 20));
jTextField6.setToolTipText("€");
jTextField6.setText("");
jTextField6.setBounds(new Rectangle(134, 77, 100, 20));
jTextField7.setToolTipText("€");
jTextField7.setText("");
jTextField7.setBounds(new Rectangle(134, 104, 100, 20));
jTextField8.setToolTipText("l/100km");
jTextField8.setText("");
jTextField8.setBounds(new Rectangle(134, 133, 100, 20));
contentPane.add(jLabel1, null);
jPanel1.add(jLabel5);
jPanel1.add(jLabel8);
jPanel1.add(jTextField8);
jPanel1.add(jTextField6);
jPanel1.add(jTextField7);
jPanel1.add(jTextField5);
jPanel1.add(jTextField4);
jPanel1.add(jLabel7);
jPanel1.add(jLabel6);
jPanel1.add(jLabel9);
jPanel1.add(jLabel10);
contentPane.add(jLabel4);
contentPane.add(jLabel3);
contentPane.add(jLabel2);
contentPane.add(jTextField1);
contentPane.add(jTextField3);
contentPane.add(jTextField2);
contentPane.add(jButton1);
contentPane.add(jButton2);
contentPane.add(jPanel1);
}

public void jButton2_actionPerformed(ActionEvent e) {
System.exit(0);
}

// globale Variablen definiert

double j=0,l=0,m=0;

public void jButton1_actionPerformed(ActionEvent e) {
double a,b,c,f,g,h,k;

try {
a = Double.valueOf(jTextField1.getText()).doubleValue();
b = Double.valueOf(jTextField2.getText()).doubleValue();
c = Double.valueOf(jTextField3.getText()).doubleValue();

// Berechnung
if (b<a) throw new Exception("errormessage");
f = b-a; // gefahrene Strecke
g = (c/f)*100; // Durchschnittsverbrauch
h = c*1.35; // Kosten Einzelfahrt
j = j+h; // Gesamkosten
l = l+c;
m = m+f;
k = (l/m)*100; // Benzindurchschnitt gesamt


// Rundung
f = Math.round(f* 100. ) / 100.;
g = Math.round(g* 100. ) / 100.;
h = Math.round(h* 100. ) / 100.;
j = Math.round(j* 100. ) / 100.;
k = Math.round(k* 100. ) / 100.;


// Ausgabe
jTextField4.setText(String.valueOf(f));
jTextField5.setText(String.valueOf(g));
jTextField6.setText(String.valueOf(h));
jTextField7.setText(String.valueOf(j));
jTextField8.setText(String.valueOf(k));
}
catch

(NumberFormatException d)
{

JOptionPane msg = new JOptionPane();
JOptionPane.showMessageDialog (msg,"Bitte Zahlen eingeben!","Fehlermeldung",
JOptionPane.ERROR_MESSAGE);

}
catch

(Exception w)
{

JOptionPane msg = new JOptionPane();
JOptionPane.showMessageDialog (msg,"Km-Stand neu ist kleiner als Km-Stand alt!","Fehlermeldung",
JOptionPane.ERROR_MESSAGE);

}

}
}


class Frame1_jButton1_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}


class Frame1_jButton2_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_jButton2_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
 
Zuletzt bearbeitet:
Dabei seit
Mai 2006
Beiträge
191
Wie wäre es damit?

DecimalFormat df = new java.text.DecimalFormat( "0.00" );

Ausgabe dann:

jTextField4.setText(df.format( deinDoubleWert ));

Dann könnte man das Ganze noch nett formatieren, zB "###,##0.00" statt "0.00", wenn man die Tausender-Trennpunkte haben möchte. :)
 
Zuletzt bearbeitet:
Top