Java文件读取器put((char)i),k++;)在HashMap中

Java文件读取器put((char)i),k++;)在HashMap中,java,hashmap,filereader,Java,Hashmap,Filereader,我试图读取文件的内容,并计算每个字母出现的频率。这就是我的情况: public static void readFile() throws Exception { Map<Character, Integer> lcount = new HashMap<>(); for (Character letter = 'A'; letter <= 'Z'; letter++) { lcount.put(letter, 0); }

我试图读取文件的内容,并计算每个字母出现的频率。这就是我的情况:

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.");
    }
}
public static void readFile()引发异常{
Map lcount=new HashMap();

对于(字符字母='A';字母使用
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
的原始值(在增量之前)

或:

没有方法get():


我无法将HashMap中的字符应用于char。(char)I)是有问题的部分,因为它的类型错误。@FFRA我刚刚注意到在
(char)I
之后有一个额外的
。如果
reader.read()
产生的字母超出了“A”-“Z”的范围?@Arvind我还没到那里。这是为了上学,所以我会一步一步地走。你打了个小错误:
lcount.put((char)I),k++;
应该是
lcount.put((char)I),k++;
lcount.put((char)I,k++)
注意
char!=Character
@Ferrybig噢,谢谢!就是这样。我真傻。
for (int i = 1; i != -1; i = reader.read()) {
    lcount.put((char) i, lcount.get((char) i) + 1);
}
for (int i = 1; i != -1; i = reader.read()) {
    lcount.compute((char) i, (x, i) -> i + 1);
}