對於作業分配,我必須創建一個程序,將欺騙hang子手。爲了做到這一點,我需要想出一種通過字母位置將單詞分組到家庭的方法。因此,舉例來說,如果單詞長度是4,並且他們猜測「e」,那麼所有會出現「 - - - e」的單詞都會出現在hashmap的Arraylist中,其中一個模式作爲關鍵字, - 「將會在另一個相同的hashmap的ArrayLists中以模式作爲關鍵字。我的問題是,儘管我的程序能夠識別模式。它仍然返回一個空集或一個包含所有單詞的ArrayList。現在我一直在嘗試不同的事情一個多小時,我似乎無法讓他們正確分組。任何幫助是極大的讚賞。這裏是我爲類分離單詞並將其添加到Hashmap的代碼。Java Hashmaps單詞分組不會返回多個ArrayList
import java.util.ArrayList;
import java.lang.StringBuilder;
import java.util.HashMap;
public class EvilEngine
{
HashMap<StringBuilder, ArrayList> families = new HashMap<StringBuilder, ArrayList>();
int k = 0;
ArrayList<String> currentList = new ArrayList();
StringBuilder blankPattern = new StringBuilder("");
StringBuilder newPattern = new StringBuilder("");
public void PatternMatcher(ArrayList wordlist, char guess, Integer wordlength)
{
String word;
int j = 0;
int x = 0;
int biggest = 0;
StringBuilder longest = null;
while(x < wordlist.size())
{
int i = 0;
int index = 0;
for (i=0; i < wordlength; i++)
{
blankPattern = blankPattern.append("-");
}
boolean boo = false;
newPattern = blankPattern;
word = (String) wordlist.get(x);
index = word.indexOf(guess);
while (index >= 0)
{
blankPattern.setCharAt(index, guess);
newPattern = blankPattern;
index = word.indexOf(guess, index + 1);
}
this.PatternCompiler(word,newPattern);
blankPattern = blankPattern.delete(0,wordlength);
x++;
}
}
public void PatternCompiler (String word, StringBuilder pattern)
{
if(!families.containsKey(pattern))
{
ArrayList<String> newPatternList = new ArrayList();
newPatternList.add(word);
families.put(pattern, newPatternList);
}
if (families.containsKey(pattern))
{
ArrayList<String> oldPatternList = new ArrayList();
oldPatternList = families.get(pattern);
oldPatternList.add(word);
families.put(pattern, oldPatternList);
}
else {
System.out.println("Error");
}
}
public HashMap<StringBuilder, ArrayList> returnFamilies(){
return families;
}
}
「wordlist」中的每個單詞是否保證長度爲「wordlength」?你應該跳過長度不正確的單詞。 – 2013-04-25 01:51:23
是的,我已經將字典文件剪切成只包含適當長度單詞的ArrayList。出於某種原因,它不斷返回一張空白的地圖。 – 2013-04-25 02:00:58