我一直在尝试编写一个使用哈希图的字典程序。我有两个由单词和定义组成的arraylist,然后有一个hashmap。 但是,我检查了我的哈希表,里面充满了空条目。我不知道为什么put函数不起作用。有什么建议吗?
import java.io.*;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Map;
public class Dictionary10{
public static void main(String[] args)
{
ArrayList<String> words = new ArrayList<String>();
ArrayList<String> definitions = new ArrayList<String>();
HashMap<String, String> map = new HashMap<String, String>();
Scanner sc = new Scanner(System.in);
System.out.println("Enter a word for a definition.");
String find = sc.nextLine();
////ASSUME BOTH ARRAYLISTS CONTAIN WORDS AND DEFINITIONS
for(int k = 0; k< words.size(); k++)
{
map.put((words.get(k)), (definitions.get(k)));
}
for(int l = 0; l<words.size(); l++)
{
if((words.get(l).indexOf(find)) != -1)
{
System.out.println(find + " : " + map.get(find));
}
}
sc.close();
}
}
如果我输入类似“ alarm”的内容,则会收到警报:null。 字典没有输入值,我也不知道为什么。
答案 0 :(得分:1)
您的代码允许find
列表中某个单词内的words
部分匹配。但是,不是查找完整单词的定义,而是查找包含在完整单词中的部分单词的定义,该单词显然不存在。
也许定义词是“警报系统”,而您的find
包含"alarm"
。
您应该在地图中查找定义词:
if((words.get(l).indexOf(find)) != -1)
{
System.out.println(find + " : " + map.get(words.get(l))); // instead of map.get(find)
}