gpt4 book ai didi

java - 计算字母频率错误

转载 作者:行者123 更新时间:2023-11-30 07:00:40 25 4
gpt4 key购买 nike

我正在创建一个程序,该程序读取 txt 文件并计算符号/字母/数字的频率。到目前为止,我已经使用 HashMap 来存储这些值并将它们打印到屏幕上(按字母顺序)。

我已经设法按升序打印 key ,但是我在列表开头得到一个“:1”,我似乎不知道哪里出了问题。

public class abc {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("C:\\random20000.txt"));
HashMap<Character, Integer> hmap = new HashMap<Character, Integer>();

String s = reader.readLine();
for (int i = 0; i < s.length(); i ++) {
char c = s.charAt(i);
Integer val = hmap.get(new Character(c));
if (val != null && c != ' ') {
hmap.put(c, new Integer(val + 1));
}
else {
hmap.put(c, 1);
}

}
reader.close();



System.out.println("Hash Map Before Sorting");
Set set = hmap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Map.Entry<Character, Integer> me = (Map.Entry<Character, Integer>)iterator.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}

我有一种感觉,要么是 (val != null && c != ' ') 要么是 hmap.put(c,1) 行。

最佳答案

Integer val = hmap.get(new Character(c));
if (val != null && c != ' ') {
hmap.put(c, new Integer(val + 1));
}
else {
hmap.put(c, 1);
}

这里,您仅在更新号码时检查它是否为空格。因此,第一次找到空间时,会将其插入到 map 中。因此,您需要检查这两种情况下都不是空格。

例如类似

if (c != ' ') {
Integer val = hmap.get(new Character(c));
if (val != null) {
hmap.put(c, new Integer(val + 1));
}
else {
hmap.put(c, 1);
}
}

关于java - 计算字母频率错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com