Search code examples
javaswingactionlistenerjtextfield

catching exceptions with jTextField


The system I am building computes feet to inches, however whenever one of the textfields gets left open the system cannot run (ex.( ??/12) + ?) I was wondering how do I set it when the textfield is left empty the number gets set to zero by default.

package calcu;
import java.awt.event.ItemEvent;
import java.text.NumberFormat;
import java.awt.event.KeyEvent;
import javax.swing.JFormattedTextField.*;
import javax.swing.*;
import javax.swing.JFormattedTextField.*;

void carefull() {
    String sumthing = "";
    double feet = Double.parseDouble(jTextField1.getText());

    double inches = Double.parseDouble(jTextField2.getText());
    NumberFormat changer = NumberFormat.getNumberInstance();
    double tik = feet * 12;

    double tok = inches + tik;

    try {
        if (jTextField1.getText().trim().equals("")) {
            double ans = inches;
            sumthing = changer.format(ans);
        }
        if (jComboBox1.getSelectedItem().equals(" ")) {
            sumthing = changer.format(tok);
        }
    } catch (NumberFormatException e) {
        spum1.setText(sumthing);
    }
}  

Solution

  • You should catch NumberFormatExceptions like this:

    double feet;
    try {
        feet = Double.parseDouble(jTextField1.getText());
    } catch (NumberFormatException e) {
        feet = 0;
    }
    double inches;
    try {
        inches = Double.parseDouble(jTextField2.getText());
    } catch (NumberFormatException e) {
        inches = 0;
    }
    

    This will also interpret a non-number like 123kjh as 0.