Sumithra Sumithra -4 years ago 80
Java Question

Hashmap implementation to count the occurences of each character

The below code is to count the occurence of each character and it should print the count.
But with the code i have tried i get only a 1 I don't know the changes i should make. Please help me.

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

class Count_CharMap {
public static void main(String[] args) {
try
{
FileInputStream file = new FileInputStream("D:\\trial.txt");
DataInputStream dis = new DataInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(dis));
String Contents="";
String str="";

while ((Contents = br.readLine()) != null) {
str+=Contents;
}

char[]char_array =str.toCharArray();
int count = 0;
char ch = char_array[count];
Map<Character,Integer> charCounter=new HashMap<Character,Integer>();
for(int i=0;i<str.length();i++)
{
if(charCounter.containsKey(char_array[i]))
{
charCounter.put(ch, charCounter.get(ch)+1);
}
else
{
charCounter.put(ch, 1);
}
}

for(Character key:charCounter.keySet())
{
System.out.println(key+""+charCounter.get(key));
}
}
catch(IOException e1){
System.out.println(e1);
}
}
}


Actual output should be like
If i have abcdabc in my trial.txt it should print a 2 b 2c 2 d 1.

Answer Source

You're leaving char ch set as the same character through each execution of the loop.

It should be:

ch = char_array[i]; 
if(charCounter.containsKey(ch)){
     charCounter.put(ch, charCounter.get(ch)+1);
}
else
{
    charCounter.put(ch, 1);
}

Inside the for loop.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download