java - 从数组列表中读取并与输入字符串进行比较

标签 java arrays list compare character

基本上,我被要求创建一个小写字母游戏,其中用户选择一些元音和辅音,并将它们添加到数组列表中,一旦发生这种情况,我们必须打印出数组列表的内容,例如它可能看起来像这样,[T,S,I,L,Y,A,R,R,A],然后我们提示玩家输入他们认为可以从给定的字符列表中组成的单词。我正在寻找的一些指示是如何确保用户只能使用他们的字符以及如何将他们的答案与字典文件进行比较。到目前为止,我唯一的代码是在我的字典文件中读取。任何帮助将不胜感激。

try {

    BufferedReader reader = new BufferedReader(new FileReader("dictionary.txt"));
    String line = reader.readLine();
    List<String> words = new ArrayList<String>();
    while (line != null) {
        String[] wordsLine = line.split(" ");
        for (String word : wordsLine) {
            words.add(word);
        }
        line = reader.readLine();
    }
    System.out.println("Here is your board again: " + genString + "\n");
    System.out.println("Please enter your answer!\n");
} catch (Exception e) {
    System.out.println(e);
}

genString 是我的,字符列表是什么,我仍然需要放置扫描仪以供用户输入。

最佳答案

基本思想是将用户输入的字符放入某个集合中,然后迭代单词的字符并对照该集合进行检查。 最后,如果一切正常,请在字典中查找该单词。

List<Character> charsFromUser = new LinkedList<Character>();
Set<String> dictionary        = new HashSet<String>();
boolean illegalCharUsed       = false;
boolean done                  = false;
String wordFromUser           = null;

// dictionary = // fill dictionary
// charsFromUser = // get chars from user
// wordFromUser = // get word from user

for (int i = 0, l = wordFromUser.length(); i < l && !illegalCharUsed; ++i) {
    char c = wordFromUser.charAt(i);
    if (!charsFromUser.contains(c)) {
        illegalCharUsed = true;
    } else {
        charsFromUser.remove(Character.valueOf(c)); // remove this line if 
                                                    // users may reuse letters
    }
}

if (!dictionary.contains(wordFromUser)) {
    if (!illegalCharUsed && charsFromUser.isEmpty()) { // isEmpty check if users
                                                       // must use all letters
        System.out.println("well done");
    } else {
        System.out.println("you didn't use the correct characters");
    }
} else {
    System.out.println("not a legal word");
}

关于java - 从数组列表中读取并与输入字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440141/

相关文章:

c++ - 将文件的元素加载到 C++ 中的二维数组中

Java 选择列表元素

java - java.util.Map 的现有基于文件的实现

java - Aapt2异常: Android resource linking failed Output: error: failed to open APK: Invalid file

javascript - 覆盖键/值数组中的键(如果存在)

javascript - 将键/值数组中的对象与另一个对象(键/值)进行比较

python - 比较列表中的值

java - 列表作为Java中的输出参数

具有灵活回退值的 java.time DateTimeFormatter 解析

java - 使用 null 参数调用 Class.newInstance 会导致 IllegalArgumentException