我正在尝试为一个刽子手游戏制作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;
}
答案 0 :(得分:1)
问题是我没有更新max变量,因此它从未进入if语句并更新了添加变量。
的简单补充max = 0;
到while循环的末尾修复它。