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

时间:2014-03-16 17:18:29

标签: 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是我的,字符列表是什么,我仍然要将扫描仪放在用户输入中。

1 个答案:

答案 0 :(得分:0)

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

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");
}