我正在创建一个读取txt文件并计算符号/字母/数字频率的程序。到目前为止,我已经使用HashMap存储这些值并将它们打印到屏幕上(按字母顺序排列)。
我已设法按升序打印键,但是我得到了一个' :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&amp;&amp; c!=&#39;&#39;)或hmap.put(c,1)行。
答案 0 :(得分:1)
Integer val = hmap.get(new Character(c));
if (val != null && c != ' ') {
hmap.put(c, new Integer(val + 1));
}
else {
hmap.put(c, 1);
}
此处您只是在更新号码时检查它是否为空格。因此,第一次找到空格时,它会被插入地图中。所以你需要检查两种情况下它不是空格。
例如
if (c != ' ') {
Integer val = hmap.get(new Character(c));
if (val != null) {
hmap.put(c, new Integer(val + 1));
}
else {
hmap.put(c, 1);
}
}
答案 1 :(得分:0)
您好我认为您的数据文件存在问题。如果有&#34;我会得到与你相同的结果。 &#34;此文件中的空格字符。请发布您的数据文件。