java - 检测用户输入的单词是否与Java中数组列表中的字符串匹配

标签 java string arraylist keyevent

我正在尝试用 Java 创建类似 Typer Shark 的游戏。我在检测用户输入的字符串是否与数组列表中的元素匹配时遇到问题。我尝试这样做:

    char key = e.getKeyChar();
    ArrayList<String> word = new ArrayList<String>();
    word.add("hello");
    word.add("red");
    word.add("blue");
    int counter = 0;

    for(String temp:word){
        for(int i=0; i<temp.length();i++){
            if(key==temp.charAt(i))
                counter++;
            else
                break;
        }
        if(counter==temp.length())
          System.out.println("Correct");
    }

我不确定我是否走在正确的道路上。提前致谢!

编辑:我尝试使用文本字段执行此操作,它有效,但玩家必须按 Enter 键,程序才能在数组列表中找到匹配项。我试图找出是否可以在不按 Enter 的情况下匹配键入的单词(只需使用 Java 中的 keyTyped )。谢谢!

最佳答案

您没有为每个单词重置计数器。将其移至外部 for 循环内部。您还需要记住以前的字符。

还可以考虑使用String.startsWith

除了记住以前的字符之外,您还可以记住以前匹配的单词。 java.util.BitSet 非常适合此目的。

重新编辑:假设您使用的是 Swing(或 AWT),如果您将 DocumentListener 添加到 JTextFieldDocument,然后在 insertUpdateremoveUpdate 上运行代码(changedUpdate 表示其他内容),那么您可以忽略 ActionListener

关于java - 检测用户输入的单词是否与Java中数组列表中的字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094015/

相关文章:

java - Android - 从 URL 获取图像而不保存到存储

java - 如何根据以前的选择顺序对购物 list 进行排序?

python -\n 在 python 中的工作

Java JDBC 不是重用 String 值吗?

python - 在 MATLAB 和 Python 中转换为二进制

c - 如何根据用户的输入/选择打印和编辑数组列表中的特定元素?

java - 将 Spring 3.1 项目更新为 hibernate4 现在找不到当前线程的 session

java - 如何从hashmap集合中获取mindate值?

python - 如何在Python中的for循环内创建对象列表而不继承属性值

java - 不带应用程序服务器的 JPA