提问人:fritzweatshirt 提问时间:10/24/2018 最后编辑:fritzweatshirt 更新时间:10/24/2018 访问量:69
Java FileReader 在 HashMap 中放置 ((char) i), k++)
Java FileReader put ((char) i), k++) in HashMap
问:
我正在尝试读取文件的内容并计算每个字母出现的频率。这是我的情况:
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 中的字母数。
异常说:Map 中的 put (Character, Integer) 不能应用于 (char)
如何在位置 i 读取 Character 类型的值并将其用作键以在我的 HashMap 中为其添加值?
提前致谢。
编辑:感谢@Ferrybig。我只是错过了一个“(”。我以为是关于 变量类型。
答:
0赞
Eran
10/24/2018
#1
用:k + 1
for (int i = 1; i != -1; i = reader.read()) {
int k = lcount.get((char) i);
lcount.put((char) i, k + 1);
}
k++
返回 (在增量之前)的原始值。k
艺术
for (int i = 1; i != -1; i = reader.read()) {
lcount.put((char) i, lcount.get((char) i) + 1);
}
评论
0赞
fritzweatshirt
10/24/2018
我无法将 HashMap 中的 Character 应用于 char。 (char) i) 是有问题的部分,因为它的类型错误。
0赞
Eran
10/24/2018
@FFRA我刚刚注意到你有一个额外的.)
(char) i
0赞
Ilya
10/24/2018
#2
没有方法 get():
for (int i = 1; i != -1; i = reader.read()) {
lcount.compute((char) i, (x, i) -> i + 1);
}
评论
reader.read()
lcount.put((char) i) ,k++);
lcount.put(((char) i) ,k++);
lcount.put((char) i ,k++);
char != Character