将文本从JTextArea存储为数组列表

问题描述 投票:0回答:1

我需要创建一个程序来将所有单词存储在数组列表中。然后,检查文本字段中的用户输入,看看它是否以数字和标点符号以外的其他内容开头。否则,它将需要显示一个错误并阻止将要添加到该数组列表中的字符串并显示一个适当的错误。

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("");
        }
    }
}
java arraylist actionlistener actionevent
1个回答
2
投票

为了澄清,我将再次说明您的问题,如果我有误解,请纠正我。

您有一个文本字段和一个文本区域。您希望用户在文本字段中键入一个单词并提交。如果该单词以数字或标点符号开头,请向用户指示错误。否则,将其添加到文本区域(在新行中)和内部ArrayList。

要解决此问题,您需要做几件事:

  1. ArrayList<String>,它是您可以在其中存储单词的类成员变量
  2. 处理按钮单击的事件处理程序。

事件处理程序应:

  1. 从文本字段中解析字符串(使用getText(),就像您已经使用的一样。]
  2. 进行您已经在做的错误检查。
  3. 如果两个错误条件都没有出现(为此添加一个else子句,请将单词添加到文本区域(您已经在做)并将其添加到ArrayList。

希望这可以帮助您更清晰地了解如何解决该问题。如果没有,请发布您尝试过的代码以及您具体遇到的错误的代码示例。

编辑:如果假设声明一个新的ArrayList来将您的单词作为类成员保存,则这是您的if-else错误处理代码块的一些伪代码:

// 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.