我的文件的值如下:
一个,9,1
B,2,4
C,2,4
直到*,2,0 这是我的代码: public static final String letterFileLoc = "filelocation";
public static Map<Character, Integer> letterValueMap;
public static Map<Character, Integer> letterCountMap;
public static void constructLetterMaps() throws FileNotFoundException{
File pointvals = new File(letterFileLoc);
Scanner pts = new Scanner(pointvals);
while (pts.hasNext()){
String [] parts = pts.next().split(",");
char alpha = (parts[0]).charAt(0);
int counts = Integer.parseInt(parts[1]);
int values = Integer.parseInt(parts[2]);
letterValueMap.put(alpha, values);
letterCountMap.put(alpha, counts);
}
当我放置值时,我一直得到一个空指针expception。我不明白为什么。有人可以解释一下吗?
答案 0 :(得分:2)
您需要像这样初始化letterValueMap
和letterCountMap
:
letterValueMap = new HashMap<Character, Integer>();
letterCountMap = new HashMap<Character, Integer>();
在使用两个Map
之前,将该代码放在您的类中的任何位置。
您也可以在声明时初始化它们,如下所示:
public static Map<Character, Integer> letterValueMap = new HashMap<Character, Integer>();
public static Map<Character, Integer> letterCountMap = new HashMap<Character, Integer>();
答案 1 :(得分:1)
你有
public static Map<Character, Integer> letterValueMap;
public static Map<Character, Integer> letterCountMap;
...但你还没有初步化它们。你需要在某个地方调用构造函数; e.g:
static{
letterValueMap = new HashMap<Character, Integer>();
letterCountMap = new HashMap<Character, Integer>();
}