Java Gui Сумма двух чисел - PullRequest
       1

Java Gui Сумма двух чисел

0 голосов
/ 30 апреля 2020

Я сделал GUI, который в основном добавляет числа из двух текстовых полей. Проблема в том, что если я оставлю другое текстовое поле пустым, а другое текстовое поле будет иметь номер, текстовое поле результата не обновляется.

public class AdditionGui extends JFrame implements ActionListener {
    private TextField tf1 , tf2 , tf3;
    private Label sign, equalsign;
    private int sum = 0;

    AdditionGui(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        tf1 = new TextField(5);
        add(tf1);
        tf1.addActionListener(this);
        sign = new Label("+");
        add(sign);
        tf2 = new TextField(5);
        add(tf2);
        tf2.addActionListener(this);

        equalsign = new Label("=");
        add(equalsign);
        tf3 = new TextField(5);
        add(tf3);

        setTitle("Sum of two numbers");
        setSize(220,120);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {

        int val1 = Integer.parseInt(tf1.getText());
        int val2 = Integer.parseInt(tf2.getText());
        sum = val1 + val2;
        tf3.setText("" + sum);
     }
 }

1 Ответ

0 голосов
/ 30 апреля 2020

Пустое текстовое поле означает, что его содержимое не может быть проанализировано в Integer. В этом случае эта строка вашего кода выдаст NumberFormatException (если tf1 пусто).

int val1 = Integer.parseInt(tf1.getText());

В вашем методе actionPerformed() убедитесь, что getText() возвращает число.
Я предлагаю установить пустое текстовое поле в ноль, например:

String text1 = tf1.getText();
if (text1.length() == 0) {
   text1 = "0";
}
int val1 = Integer.parseInt(text1);
String text2 = tf2.getText();
if (text2.length() == 0) {
   text2 = "0";
}
int val2 = Integer.parseInt(text2);
int sum = val1 + val2;
tf3.setText(Integer.toString(sum));

Теперь вам нужно подумать.
Что произойдет, если пользователь введет не-ди git в одно из текстовых полей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...