Dodawanie danych z pola tekstowego JTextField do Listy za pomocą JButton

0

Hej,
Postanowilem zrobic zadanie ze SPOJA https://pl.spoj.com/problems/BFN1/ wczytujac dane za pomoca stworzonego przeze mnie okna z przyciskami i polem tekstowym, a sam wynik póki co chcę odczytac w konsoli. Niestety po wpisaniu liczby i wciśnieciu guzika "Add new number" wyskakuje wyjątek. Wydaje mi sie, ze pojawia sie on z powodu próby zmiany typu pobranej liczby z Stringa na Integer. Nie bardzo rozumiem dlaczego tak sie dzieje i jak z tego wybrnąć.
Kod:

public class Main {

    public static void main(String[] args) {
        new MyFrame();
        

    }
}

klasa:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;


public class MyFrame extends JFrame implements ActionListener {

    private JLabel label;
    private JTextField textField;
    private JButton addNumber;
    private JButton checkPolidroms;
    private int numberOfOperations;
    private Integer number;
    private List<Integer> numbers = new ArrayList<>();
    private int amountOfInputs;

    MyFrame() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(null);
        this.setSize(400, 400);
        this.setLocationRelativeTo(null);
        this.setResizable(false);


        label = new JLabel();
        label.setText("Enter a number");
        label.setBounds(50, 20, 300, 50);
        label.setFont(new Font("MV Boli", Font.PLAIN, 35));
        label.setForeground(Color.green);

        textField = new JTextField();
        textField.setBounds(150, 100, 100, 50);
        textField.setFont(new Font("Arial", Font.PLAIN, 35));

        addNumber = new JButton("Add new number");
        addNumber.setBounds(125, 200, 150, 50);
        addNumber.setFocusable(false);
        addNumber.addActionListener(this);

        checkPolidroms = new JButton("Check Polidroms");
        checkPolidroms.setBounds(125, 275, 150, 50);
        checkPolidroms.setFocusable(false);
        checkPolidroms.addActionListener(this);

        this.add(label);
        this.add(textField);
        this.add(addNumber);
        this.add(checkPolidroms);
        this.setVisible(true);

    }


    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == addNumber) {
            String numberToString = addNumber.getText();
            textField.setText("");
            number = Integer.parseInt(String.valueOf(numberToString));
            numbers.add(number);
            amountOfInputs++;
        }
        if (e.getSource() == checkPolidroms) {

            for(int i=0;i<amountOfInputs;i++){

                getPolidrom(numbers.get(i));

            }
            numbers.clear();
            amountOfInputs=0;
            }
        }



    public static int reverseNumber(int number) {
        char[] numberToCharArray = String.valueOf(number).toCharArray();
        int i = 0;
        int j = numberToCharArray.length - 1;
        while (i < j) {
            char tempElement = numberToCharArray[i];
            numberToCharArray[i] = numberToCharArray[j];
            numberToCharArray[j] = tempElement;
            i++;
            j--;

        }
        int reversedNumber = Integer.parseInt(String.valueOf(numberToCharArray));
        return reversedNumber;

    }

    public void getPolidrom(Integer number) {

        int number1 = number;
        int number2 = reverseNumber(number);
        while (true) {

            if (number1 != number2) {

                number = number1 + number2;
                number1 = number;
                number2 = reverseNumber(number);
                numberOfOperations++;

            } else {
                System.out.println(number + " " + numberOfOperations);
                numberOfOperations = 0;
                break;
            }
        }
    }
}

Dopiera sie uczę, wiec jesli macie jakies uwagi lub wskazówki do kody to też chętnie się dowiem.

1

Jakbyś napisał jaki wyjątek to dawno byś miał odpowiedź a tak to na mnie musiałeś czekać.
String numberToString = addNumber.getText(); - pobiera text z addNumber a addNumber to JButton.
Próbujesz wziąć liczbową wartość ze Stringa "Add new number".
Zmień to na wartość z pola gdzie wpisujesz liczbę czyli textField.

I nie polidrom tylko palindrom.

1 użytkowników online, w tym zalogowanych: 0, gości: 1