【发布时间】:2018-10-24 12:30:30
【问题描述】:
我正在尝试读取文件的内容并计算每个字母出现的频率。这是我的情况:
public static void readFile() throws Exception {
Map<Character, Integer> lcount = new HashMap<>();
for (Character letter = 'A'; letter <= 'Z'; letter++) {
lcount.put(letter, 0);
}
try {
FileReader reader = new FileReader("file.txt");
for (int i = 1; i != -1; i = reader.read()) {
int k = lcount.get((char) i);
lcount.put((char) i) ,k++);
}
} catch (FileNotFoundException e) {
System.out.println("The file does not exist.");
}
}
我不能使用 ((char) i, k++) 来增加我的 HashMap 中的字母数。
异常说:put (Character, Integer) in Map cannot be applied to (char)
如何读取位置 i 处 Character 类型的值并将其用作键以将值放入我的 HashMap 中?
提前致谢。
编辑:感谢@Ferrybig。我只是错过了一个“(”。我以为是关于 变量类型。
【问题讨论】:
-
如果
reader.read()产生的字母超出范围 'A' - 'Z' 怎么办? -
@Arvind 我还没到。上学了,我一步一步来。
-
你打了一个小错字:
lcount.put((char) i) ,k++);,应该是lcount.put(((char) i) ,k++);或lcount.put((char) i ,k++); -
请注意
char != Character -
@Ferrybig 哦,谢谢!就是这样。愚蠢的我。
标签: java hashmap filereader