Я писал программу и заметил, что в некоторых случаях я сталкивался с исключением.Я выделил проблему для своих методов разбиения и замены и провел тест основного метода.Код выглядит следующим образом.
public class tester
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(300,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
JPanel panel2 = new JPanel();
frame.add(panel, BorderLayout.CENTER);
//create text box
JTextArea textArea = new JTextArea(15,10);
textArea.setEditable(true);
textArea.setText("");
panel.add(textArea);
frame.setVisible(true);
frame.add(panel2, BorderLayout.SOUTH);
String s = textArea.getText().replace("[a-z]", "");
String[] parts = s.split("\\=|\\-|\\/|\\*|\\+|\\[a-z]");
JButton b = new JButton("something");
panel2.add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
textArea.setText(s);
}
});
}
}
В частности, в строке, в которой
String s = textArea.getText().replace("[a-z]", "");
String[] parts = s.split("\\=|\\-|\\/|\\*|\\+|\\[a-z]");
используются ограничители регулярных выражений.
Ввод тестового ввода в textArea с помощью строки, такой как 123asdv1 +asd-
Ожидаемым выводом после нажатия кнопки должна быть строка: 1231 + - при вызове s.
Однако фактический вывод после нажатия на самом деле является пустой строкой, пустой.
parts используется в моей исходной программе для хранения чисел в двойной переменной для использования в вычислениях, но это было добавлено здесь для согласованности.
Было бы очень полезно, есликто-то может сказать мне, что я сделал неправильно, моя оригинальная программа предназначена для извлечения всех чисел между специальным символом, таким как + или -, для сохранения и использования для вычисления.Если была обнаружена недопустимая операция, она напечатала бы сообщение об ошибке в текстовой области и продолжила бы с того места, где она остановилась до ошибки, именно здесь я столкнулся с проблемой.