Хранение текста в виде массива из JTextArea - PullRequest
0 голосов
/ 20 октября 2019

Мне нужно создать программу для хранения всех слов в списке массивов. Затем проверьте пользовательский ввод из текстового поля, чтобы увидеть, начинается ли он с чего-либо, кроме цифр и знаков препинания. В противном случае потребуется отобразить ошибку и сохранить строку, которая будет добавлена ​​в массив, и отобразить соответствующую ошибку.

https://pastebin.com/8UwDm4nE

Здесь находится прослушиватель ActionEvent, содержащий код для проверки того, что,Я не совсем уверен, как заставить это работать.

@Override
public void actionPerformed(ActionEvent e) {
    for(int i = 0; i < 1; i++) {
        String str = tf.getText(); // MUST BE STORED ON AN ARRAY LIST
        ta.append(str + "\n"); // Append the text on new line each

        if(str.startsWith(String.valueOf(nums))) { // Check input for a number at the start
            error.setText("Error: Word starts a number. Please try again!");
            error.setForeground(Color.RED);
            ta.append("");
        } else if (str.startsWith(String.valueOf(punct))) { // Check if input contains a punctuation at the start
            error.setText("Error: Word starts with an illegal character. Please try again!");
            error.setForeground(Color.RED);
            ta.append("");
        }
    }
}

1 Ответ

2 голосов
/ 20 октября 2019

Я собираюсь перефразировать вашу проблему в качестве разъяснения, пожалуйста, исправьте меня, если я неправильно понимаю.

У вас есть текстовое поле и текстовая область. Вы хотите, чтобы пользователь ввел слово в текстовое поле и отправил его. Если это слово начинается с цифры или пунктуации, то укажите пользователю ошибку. В противном случае добавьте его в текстовую область (в новой строке) и внутренний ArrayList.

Чтобы решить эту проблему, вам понадобится пара вещей:

  1. AnArrayList<String> это переменная члена класса, в которой вы можете хранить свои слова
  2. Обработчик события, который обрабатывает нажатие кнопки.

Обработчик события должен:

  1. Разбор строки из текстового поля (используя getText(), как вы уже сделали).
  2. Выполните проверки ошибок, которые вы уже делаете.
  3. Если ни одно из условий ошибкиударил (поэтому добавьте для этого предложение else), добавьте слово в текстовую область (что вы уже делаете) и добавьте его в ArrayList.

Надеюсь, это поможет вам получитьболее четкое представление о том, как подойти к проблеме. Если нет, пожалуйста, опубликуйте пример кода того, что вы пытались и с какой ошибкой вы конкретно столкнулись.

РЕДАКТИРОВАТЬ: Вот некоторый псевдокод для вашего блока кода обработки ошибок if-else, при условии, что вы объявляетеновый ArrayList для хранения слов в классе:

// as class member variable
List<String> wordList = new ArrayList<>();

// word handler code
if (str starts with a number) {
    // handle error
} else if (str starts with punctuation) {
    // handle error
} else {
    ta.append(str + "\n");
    wordList.add(str);
}
...