我希望这个程序能够按字母顺序对困惑的单词进行排序,与字典进行比较,并与字典单词进行匹配。我让它按字母顺序打印出困惑的内容,但即使我有打印行,它也不会打印字典单词。
public class i
{
public static void main(String[] args) throws Exception
{
if (args.length < 2 ) die("No dictionary");
BufferedReader dictionaryFile = new BufferedReader( new FileReader( args[0] ));
BufferedReader jumbleFile = new BufferedReader( new FileReader( args[1] ));
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
ArrayList<String> jumbleWords = new ArrayList<String>();
ArrayList<String> dictionaryWords = new ArrayList<String>();
while(dictionaryFile.ready())
{
String dictWord = dictionaryFile.readLine();
dictionaryWords.add(dictWord);
}
while(jumbleFile.ready())
{
String word = jumbleFile.readLine();
//String canWord = toCanonical(word);
jumbleWords.add(word);
map.put(word, new ArrayList<String>());
}
Collections.sort(jumbleWords);
for(String dictionaryWord : dictionaryWords)
{
String canDictWord = toCanonical(dictionaryWord);
if(map.containsValue(canDictWord))
{
ArrayList<String> listOfWords = map.get(canDictWord);
listOfWords.add(dictionaryWord);
}
}
ArrayList<String> keysList = new ArrayList(map.keySet());
Collections.sort(keysList);
for(String key : keysList)
{
System.out.print(key);
ArrayList<String> list = map.get(key);
Collections.sort(list);
for(String word : list)
{
if (toCanonical(key).equals(toCanonical(word)))
System.out.print(word + " ");
}
System.out.println();
}
}
private static void die( String errmsg )
{
System.out.println( "\nFATAL ERROR: " + errmsg + "\n" );
System.exit(0);
}
private static String toCanonical( String word )
{
char[] letters = word.toCharArray();
Arrays.sort(letters);
return new String(letters);
}
}
最佳答案
map 的值定义为 ArrayList<String>
类型,但在下面的代码中,您尝试检查它是否包含常规 String
.
if(map.containsValue(canDictWord)) {
// ...
}
这将始终返回 false,因此您的 println
的原因不起作用是因为 map 的值 ArrayList
s 将始终为空。
很难弄清楚您实际上想要实现的目标,并且代码的格式(或缺乏格式)使其变得更加困难。您可能应该尝试制作一个 map ,其中字典单词作为键,而困惑的单词作为值列表。然后你可以使用map.containsKey(toCanonical(jumbledWord))
并将困惑的单词添加到该键的值列表中。
关于java - 为什么我的打印线无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29838548/