【问题标题】:Storing text as an arraylist from JTextArea从 JTextArea 将文本存储为数组列表
【发布时间】:2019-10-20 16:50:18
【问题描述】:

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

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】:

    我将重新表述您的问题以澄清一下,如果我有误解,请纠正我。

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

    要解决这个问题,你需要做几件事:

    1. ArrayList&lt;String&gt; 是一个类成员变量,您可以在其中存储您的文字
    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);
    }
    

    【讨论】:

    • 是的,我相信你是正确的。我目前面临的问题是如何将文本存储到数组列表中,但也将其附加到 JTextArea 中。我不确定如何将每个数字存储到一个数组中并检查这些数字中的任何一个是否位于用户输入的开头。我正在使用 .StartsWith 函数进行检查,但不确定如何在此函数中使用数字/标点数组。
    • 编辑了我的答案以显示一些应该解决您的第一个问题的伪代码:“如何将文本存储到数组列表中,但也将其附加到 JTextArea”。作为第二个问题的后续,让我们看看您将什么定义为有效词,以及什么可能使其无效。例如,是否只有某些数字/标点符号会使其无效,还是不是字母?
    • 所以输入必须以字母开头,例如“你好”。如果发现文本开头有一个数字,则必须显示错误并跳过附加到数组列表。我已经使用 if 语句检查第一个索引或数字是否为数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2013-05-18
    • 2017-11-11
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多