计算单词列表中字符的出现次数

时间:2013-05-23 13:01:02

标签: java hashtable

我正在尝试为一个刽子手游戏制作AI,其中一部分需要计算单词列表中每个可能字符的所有出现次数。我计划在计算之前剔除单词列表以使事情运行得更快(通过首先剔除与可猜测短语长度不同的所有单词,然后通过剔除与猜测的字符不匹配的单词)。

我遇到的问题是在下面的代码中。不知何故,它总是返回一个正确长度的e列表(匹配可能的字符数)。我不确定我在这里做错了什么,但问题肯定在countCharacters中。

MethodicComputer(){
    guessable = parseGuessable();
    wordList = parseText();
    priorities = countCharacters(guessable);
}


public char guessCharacter(String hint){
    char guess = 0;
    System.out.println(guessable);
    System.out.println(priorities);
    guess = priorities.charAt(0);
    priorities = priorities.replaceAll("" + guess, "");

    return guess;
}

private String countCharacters(String possibleChars){
    charCount = new Hashtable();
    String orderedPriorities = "";
    char temp = 0;
    char adding = 0;
    int count = 0;
    int max = 0;
    int length = possibleChars.length();

    for (int i = 0; i<length; i++){
        temp = possibleChars.charAt(i);
        count = wordList.length() - wordList.replaceAll("" + temp, "").length();
        charCount.put(temp, count);
    }

    while (orderedPriorities.length() < length){
        for (int i = 0; i < possibleChars.length(); i++){
            temp = possibleChars.charAt(i);
            if (max < (int) charCount.get(temp)){
                max = (int) charCount.get(temp);
                adding = temp;
            }
        }
        orderedPriorities += adding;
        possibleChars = possibleChars.replaceAll("" + adding, "");
    }

    return orderedPriorities;
}

1 个答案:

答案 0 :(得分:1)

问题是我没有更新max变量,因此它从未进入if语句并更新了添加变量。

的简单补充
max = 0; 

到while循环的末尾修复它。