Как я могу предотвратить обработку моего Java-кода в случае ошибки пользовательского ввода? - PullRequest
0 голосов
/ 14 апреля 2019

Я пишу преобразователь температуры, который использует графический интерфейс.У меня настроено, если пользователь вводит строку или неверную температуру, под окном ввода появляется метка ошибки.Однако код все равно будет обрабатываться так, как если бы пользователь ввел 0. Он все равно будет выводить преобразования.Как я могу помешать ему делать это в классе, который у меня ниже?

package gui;
import javax.swing.*;
import java.awt.*;

public class JDataInput
    extends JPanel
{
    private JLabel lblInput;
    private JTextField txtInput;
    private JLabel lblMessage;

    public JDataInput()
    {

    }

    public JDataInput(String caption)
    {

        lblInput = new JLabel(caption);
        txtInput = new JTextField(20);
        lblMessage = new JLabel("");

        JPanel row1 = new JPanel();
        JPanel row2 = new JPanel();

        row1.add(lblInput);
        row1.add(txtInput);
        row2.add(lblMessage);

        this.add(row1);
        this.add(row2);

    }

    public double getDoubleValue()
    {
        double returnValue = 0;
        lblMessage.setText(" ");

        try
        {
            returnValue =   Double.parseDouble(txtInput.getText());

        }
        catch (NumberFormatException nfex)
        {
            lblMessage.setText(nfex.toString());
            lblMessage.setForeground(Color.RED);
        }
        return returnValue;
    }

    public double getIntValue()
    {
        int returnValue = 0;
        lblMessage.setText(" ");
        try
        {
            returnValue =   Integer.parseInt(txtInput.getText());
        }
        catch (NumberFormatException nfex)
        {
            lblMessage.setForeground(Color.RED);
            lblMessage.setText(nfex.toString());
        }
        return returnValue;
    }

}

1 Ответ

0 голосов
/ 14 апреля 2019

возвращает нулевое значение из блока catch, например,

 public double getDoubleValue()
    {
        double returnValue = 0;
        lblMessage.setText(" ");

        try
        {
            returnValue =   Double.parseDouble(txtInput.getText());

        }
        catch (NumberFormatException nfex)
        {
            lblMessage.setText(nfex.toString());
            lblMessage.setForeground(Color.RED);
            return null;
        }
        return returnValue;
    }

это выйдет из функции.

...