Abfangen von java.lang.NumberFormatException

Status
Nicht offen für weitere Antworten.
M

MistressOlla

Gast
Hi,

und zwar geht es darum, dass ich TextFelder auslese, diese in Double-Werte umrechne um dann damit Berechnungen durchzuführen.
Das auslesen fuktioniert auch solange das Textfeld nicht leer ist!
Die Berechnung muss allerdings auch möglich sein wenn nicht alle Textfelder gefüllt sind.
Das heisst ich müsste die Werte der TextFelder die nicht gefüllt sind auf "0" setzen um die Berechnungen durchführen zu können.
Ich könnte mir vorstellen, dass ich um jede getText-Funktion eine "if else"-Schleife drumsetzte und abfrage, ob etwas im TextFeld steht und bei leeren Textfeldern dann denn Wert auf "0" setzte aber das wär ja eine undendliche Arbeit wenn ich so um die 100 Textfelder hätte wo ich das überprüfen müsste.
Deswegen wollte ich mal fragen, ob jemand von euch vielleicht eine bessere Methode kennt?!



Mit freundlichen Grüßen

MistressOlla
 

Niki

Top Contributor
Zuerst einmal:
if-schleife

Du solltest dir ein eigenes TextFeld machen welches von JTextField ableitet und um eine Methode getDoubleValue erweitern:

Code:
  public double getDoubleValue(){
    String text = getText();
    if(text.length() == 0)
      return 0.0;
    try{
      return Double.parseDouble(text);
    }catch(NumberFormatException ex){
      return 0.0;
    }
  }

Ich glaub das if kannst du dir sparen, denn bei leerem Text wird die Exception genauso geworfen
 

sliwalker

Top Contributor
Hi,

was Niki sagt ist wohl die beste Lösung(so ohne Hintergundwissen).
Aber ich weiß nicht ob Du verstehst was sie? (er?) meint.

Anstatt irgendwo JTextField meineZahl = new JTextField() zu schreiben, schreibst Du zB. DoubleTextField meineZahl = new DoubleTextField();.

Das alleine reicht aber nicht.
Du musst Dir eine Klasse erstellen(eine Datei) die Du DoubleTextField nennst und die "extends JTextField" ist, wo Du die Methode reinschreibst, die Niki geschrieben hat.

Dann kannst Du mit meineZahl.getDoubleValue() ganz easy Deine Werte bekommen und bekomst automatisch immer 0.0 zurück, wenn das feld leer war oder Mist drin stand.

greetz
SLi
 

Marco13

Top Contributor
Hm :? das mit den abgeleiteten TextFields sieht irgendwie strange aus :? allerdings sind die gegebenen Informationen etwas zu spärlich, als dass man "die optimale Lösung" nennen könnte.
Um wie viele TextFields geht's denn? Wie sind sie gespeichert? (Array oder einzeln?). Würde es reichen, ihnen direkt beim erstellen ihren Standard-Inhalt mitzugeben
JTextField textField = new JTextField("0.0");
? Wie liest du sie denn aus?
 
M

MistressOlla

Gast
Sie werden einzelnd erzeugt und es sind insgesamt 8 TextFelder.

Auslesen mach ich so:


Code:
dlistVK = new Double(tlistVK.getText().replace(',', '.'));
 
M

MistressOlla

Gast
Ich poste einfach mal denn ganzen Code ist aber bei weitem noch nciht fertig also nciht wundern wenn es ein bisschen durcheinander ist:

Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;
import javax.swing.text.MaskFormatter;

public class BezugskalkulationGui implements ActionListener {

	private JFrame frame;
	private JPanel panel, panel1, panel2;
	private JLabel llistVK, lzielVK, lbarEP, lbP, lsK, lbarVP, lzielVP, lvPo,
			lvPm, lZVR, lZVS, lBP, lHk, lGz, lKs, lKr, lMs, lEp;
	private JTextField tlistVK, tzielVK, tbarEP, tbP, tsK, tbarVP, tzielVP,
			tvPo, tvPm, tZVR, tZVS, tBP, tHk, tGz, tKs, tKr, tMs, tEp;
	private JButton berechnen;
	private JRadioButton bt1, bt2;
	private ButtonGroup group;
	private MaskFormatter formatter;
	public double dlistVK, dZVS, dZVR, dBP, dHK, dGz, dKs, dKr, dMs, dvPm;

	public BezugskalkulationGui() {
		init();

	}

	public void init() {

		createFrame();
		createPanel();
		createLabel();
		createFormattedTextField();
		createButton();
		createRadioButton();
		addLayout();
		show();

	}

	public void createFrame() {

		frame = new JFrame("Bezugskalkulation");

	}

	public void createPanel() {

		// Panels + Rahmen werden erzeugt
		panel = new JPanel(new GridLayout(7, 2));
		panel.setBorder(new TitledBorder("Bezugskalkulation:"));
		panel1 = new JPanel(new GridLayout(11, 2));
		panel1.setBorder(new TitledBorder("Verkaufspreiskalkulation:"));
		panel2 = new JPanel();

	}

	public void createLabel() {

		// labels werden erzeugt
		llistVK = new JLabel("Listenverkaufspreis:");
		lzielVK = new JLabel("Zielverkaufspreis:");
		lbarEP = new JLabel("Bareinkaufspreis:");
		lbP = new JLabel("Bezugspreis:");
		lsK = new JLabel("Selbstkosten:");
		lbarVP = new JLabel("Barverkaufspreis:");
		lzielVP = new JLabel("Zielverkaufspreis:");
		lvPo = new JLabel("Verkaufspreis(ohne MwSt):");
		lvPm = new JLabel("Verkaufspreis(mit MwSt):");
		lZVR = new JLabel("Zieleinkaufsrabbat: (%)");
		lZVS = new JLabel("Zieleinkaufsskonto: (%)");
		lBP = new JLabel("Bezugskosten:");
		lEp = new JLabel("Bezugspreis/Einstandskosten:");
		lHk = new JLabel("Handlungskosten: (%)");
		lGz = new JLabel("Gwinnzuschlag: (%)");
		lKs = new JLabel("Kundenskonto: (i.H %)");
		lKr = new JLabel("Kundenrabbat: (i.H %)");
		lMs = new JLabel("MwSt: (%)");

	}

	public void createFormattedTextField() {

		// Textfelder werden erzeugt
		tlistVK = new JTextField(2);
		tzielVK = new JTextField(20);
		tbarEP = new JTextField();
		tbP = new JTextField();
		tsK = new JTextField();
		tbarVP = new JTextField();
		tzielVP = new JTextField();
		tvPo = new JTextField();
		tvPm = new JTextField();
		tZVR = new JTextField();
		tZVS = new JTextField();
		tBP = new JTextField();
		tHk = new JTextField();
		tGz = new JTextField();
		tKs = new JTextField();
		tKr = new JTextField();
		tMs = new JTextField();
		tEp = new JTextField();

	}

	public void createButton() {

		berechnen = new JButton("Berechnen");
		berechnen.addActionListener(this);

	}

	public void createRadioButton() {

		bt1 = new JRadioButton("nach Verkaufspreis brutto");
		bt2 = new JRadioButton("nach Listenverkaufspreis");
		bt1.setSelected(true);

		bt1.addActionListener(this);
		bt2.addActionListener(this);

		group = new ButtonGroup();
		group.add(bt1);
		group.add(bt2);

	}

	public void actionPerformed(ActionEvent e) {

		String command = e.getActionCommand();

		if (e.getSource() == bt1) {

			tzielVK.setEditable(false);
			tbarEP.setEditable(false);
			tbP.setEditable(false);
			tsK.setEditable(false);
			tbarVP.setEditable(false);
			tzielVP.setEditable(false);
			tvPo.setEditable(false);
			tvPm.setText("");
			tvPm.setEditable(false);
			tEp.setEditable(false);
			tlistVK.setEditable(true);

		} else if (e.getSource() == bt2) {

			tzielVK.setEditable(false);
			tbarEP.setEditable(false);
			tbP.setEditable(false);
			tsK.setEditable(false);
			tbarVP.setEditable(false);
			tzielVP.setEditable(false);
			tvPo.setEditable(false);
			tEp.setEditable(false);
			tvPm.setEditable(true);
			tlistVK.setText("");
			tlistVK.setEditable(false);

		}

		dlistVK = new Double(tlistVK.getText().replace(',', '.'));
		dvPm = new Double(tlistVK.getText().replace(',', '.'));
		dZVR = new Double(tZVR.getText().replace(',', '.'));
		dZVS = new Double(tZVS.getText().replace(',', '.'));
		dBP = new Double(tBP.getText().replace(',', '.'));
		dHK = new Double(tHk.getText().replace(',', '.'));
		dGz = new Double(tGz.getText().replace(',', '.'));
		dKs = new Double(tKs.getText().replace(',', '.'));
		dKr = new Double(tKr.getText().replace(',', '.'));
		dMs = new Double(tMs.getText().replace(',', '.'));

		System.out.println(dlistVK);
		System.out.println(dZVR);
		System.out.println(dZVS);
		System.out.println(dBP);
		System.out.println(dHK);
		System.out.println(dGz);
		System.out.println(dKs);
		System.out.println(dKr);
		System.out.println(dMs);

	}

	public void addLayout() {

		// Labels,Textfelder und Buttons werden dem jeweiligen Panel zugeordnet
		panel.add(llistVK);
		panel.add(tlistVK);

		panel.add(lZVR);
		panel.add(tZVR);

		panel.add(lzielVK);
		panel.add(tzielVK);

		panel.add(lZVS);
		panel.add(tZVS);

		panel.add(lbarEP);
		panel.add(tbarEP);

		panel.add(lBP);
		panel.add(tBP);

		panel.add(lbP);
		panel.add(tbP);

		panel1.add(lEp);
		panel1.add(tEp);

		panel1.add(lHk);
		panel1.add(tHk);

		panel1.add(lsK);
		panel1.add(tsK);

		panel1.add(lGz);
		panel1.add(tGz);

		panel1.add(lbarVP);
		panel1.add(tbarVP);

		panel1.add(lKs);
		panel1.add(tKs);

		panel1.add(lzielVP);
		panel1.add(tzielVP);

		panel1.add(lKr);
		panel1.add(tKr);

		panel1.add(lvPo);
		panel1.add(tvPo);

		panel1.add(lMs);
		panel1.add(tMs);

		panel1.add(lvPm);
		panel1.add(tvPm);

		panel2.add(berechnen, BorderLayout.CENTER);
		panel2.add(bt1, BorderLayout.EAST);
		panel2.add(bt2, BorderLayout.EAST);

		// Panels werdem dem JFrame übergeben
		frame.add(panel);
		frame.add(panel1);
		frame.add(panel2);

	}

	public void show() {

		// Panels werden im frame angeordnet
		frame.getContentPane().add(panel, BorderLayout.NORTH);
		frame.getContentPane().add(panel1, BorderLayout.CENTER);
		frame.getContentPane().add(panel2, BorderLayout.SOUTH);

		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		frame.pack();
		// frame.setSize(300, 300);
		frame.setVisible(true);

	}

	public static void main(String[] args) {

		new BezugskalkulationGui();

	}

}
 

sliwalker

Top Contributor
@Marco13:
Wie findest Du das strange?
Wenn man vielen Komponenten ein einheitliches Verjalten geben möchte, dann ist es meiner Meinung nach das Beste sich die Komponente selbst zu schreiben, so erspart man sich die Konfigurierarbeit "von aussen" und tonnenfach redundanten Code.


Aber zu Deinem Problem:
Zu allererst könntest Du die Komponenten ja auch mal in einem Array halten, dann musst Du nicht zehnmal new JTextField schrieben, sondern machst es in einer Schleife.

Ich finde immer noch, dass Du Dir die Komponente selbst schreiben solltest. Zumal ein Initialisierungswert nicht immer gewünscht ist. Wenn man viele Werte eingeben will, muss man sehen können, welcher noch fehlt. Das geht bei Standard 0.0 nicht. "War der jetzt wirklich 0.0 oder ist der noch nicht ausgefüllt?"

greetz
SLi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
S java tastendrücke direkt abfangen und printen Java Basics - Anfänger-Themen 3
L Java App + Exception abfangen Java Basics - Anfänger-Themen 2
Dimax SizeLimitExceededException abfangen Java Basics - Anfänger-Themen 6
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
L Erste Schritte IndexOutOfBounce abfangen? Java Basics - Anfänger-Themen 17
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
J Fehler abfangen mit einer Bedingung Java Basics - Anfänger-Themen 3
B Erste Schritte Abfangen eines Fehlers/Ausbrechen aus der Schleife Java Basics - Anfänger-Themen 12
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
D Input/Output Runtime().exec fehler abfangen Java Basics - Anfänger-Themen 4
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
OnDemand Exception Abfangen Java Basics - Anfänger-Themen 5
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
B Erste Schritte Integer Eingabe über Scanner mit Abfangen von Eingabefehlern Java Basics - Anfänger-Themen 3
H Wie kann ich STRG+V abfangen und ändern Java Basics - Anfänger-Themen 2
B Exception abfangen Java Basics - Anfänger-Themen 33
D [jni] loadLibrary Exception abfangen Java Basics - Anfänger-Themen 9
M Windows Aktionen abfangen Java Basics - Anfänger-Themen 3
W Tastatureingabe abfangen Java Basics - Anfänger-Themen 15
S Exception abfangen Java Basics - Anfänger-Themen 2
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
M Datentypen Fehler abfangen Java Basics - Anfänger-Themen 5
J Eclipse Console Ausgaben Abfangen Java Basics - Anfänger-Themen 2
sylo Warnings abfangen Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
H MouseEvent abfangen Java Basics - Anfänger-Themen 9
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
Spin Exception abfangen Java Basics - Anfänger-Themen 3
M Frage zum Abfangen ungültiger Werte Java Basics - Anfänger-Themen 9
I Fehlendes Argument in Main-Methode abfangen Java Basics - Anfänger-Themen 15
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
A FileNotFoundException abfangen? Java Basics - Anfänger-Themen 3
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
Spin Abfangen von Fehlern Java Basics - Anfänger-Themen 9
M Exception abfangen? Java Basics - Anfänger-Themen 3
G Eine exception mit negativen zahlen abfangen ? Java Basics - Anfänger-Themen 11
I Dialog - "Ja" / "Nein" abfangen Java Basics - Anfänger-Themen 3
G SQLServerException abfangen Java Basics - Anfänger-Themen 2
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
G Enter Taste abfangen Java Basics - Anfänger-Themen 11
T String: NeueZeile (" ") , Break etc. abfangen Java Basics - Anfänger-Themen 2
B Programm würft Exception, kann sie aber nicht abfangen! Java Basics - Anfänger-Themen 25
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
M JOptionPane.OK_OPTION abfangen oder disablen? Wie? Java Basics - Anfänger-Themen 3
M jToggleButton Klick abfangen ohne den Button zu deaktivieren Java Basics - Anfänger-Themen 2
B Tastatur abfangen Java Basics - Anfänger-Themen 11
U Pfeiltasten abfangen Java Basics - Anfänger-Themen 2
B Ausnahmen abfangen Java Basics - Anfänger-Themen 3
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5
I InputStream von Konsole abfangen Java Basics - Anfänger-Themen 6
O allgemeine Exceptions abfangen Java Basics - Anfänger-Themen 17
P Auswahl von JComboBox abfangen Java Basics - Anfänger-Themen 3
T jcombobox, item-selektierung abfangen Java Basics - Anfänger-Themen 5
F Fehler beim Schreiben wenn Datei schreibgeschützt abfangen Java Basics - Anfänger-Themen 6
C System.out.println "abfangen"? Java Basics - Anfänger-Themen 8
rambozola selbst definierte exception abfangen funzt nicht Java Basics - Anfänger-Themen 14
S von CommandLine übergebene Parameter abfangen? Java Basics - Anfänger-Themen 12
V Mausklick mit rechter Taste abfangen? Java Basics - Anfänger-Themen 8
C falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
L GUI - Tastaturereignisse abfangen ohne Fokus? Java Basics - Anfänger-Themen 8
D Frage zum abfangen von Exceptions Java Basics - Anfänger-Themen 5
V JOP.showInputDialog Abbrechen Button, Exception abfangen Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
F Exception in while-Schleife abfangen? Java Basics - Anfänger-Themen 2
F 2 numberformatexception abfangen? Java Basics - Anfänger-Themen 20
ven000m Exception abfangen Java Basics - Anfänger-Themen 9
H JTabel Selectionen abfangen Java Basics - Anfänger-Themen 2
G Fehler abfangen Java Basics - Anfänger-Themen 2
D Falscheingaben abfangen Java Basics - Anfänger-Themen 8
M Negative Werte abfangen Java Basics - Anfänger-Themen 18
G Abfangen von Falscheingaben Java Basics - Anfänger-Themen 4
C Exception abfangen->Klappt nicht ;( Java Basics - Anfänger-Themen 2
S Division durch null abfangen :freak: Java Basics - Anfänger-Themen 14
EagleEye Exception abfangen Java Basics - Anfänger-Themen 15
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben