Every file I tried on showed a good result in correct order. Don't know what could go wrong
package com.codegym.task.task18.task1821;
/*
Symbol frequency
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Map<Integer, Integer> asciiMap = new LinkedHashMap<>();
for (int i = 33; i <= 127; i++) {
asciiMap.put(i,0);
}
try (FileInputStream fis = new FileInputStream(args[0])){
byte[] buffer = null;
if(fis.available() > 0){
buffer = new byte[fis.available()];
fis.read(buffer);
}
Iterator<Integer> iterator = asciiMap.keySet().iterator();
while (iterator.hasNext()){
int key = iterator.next();
for (int i = 0; i < buffer.length; i++) {
if(key == buffer[i]){
asciiMap.replace(key, asciiMap.get(key) + 1);
}
}
}
for (Map.Entry<Integer, Integer> entry:
asciiMap.entrySet()) {
if(entry.getValue() > 0) {
int i = entry.getKey();
char j = (char) i;
System.out.println(j + " " + entry.getValue());
}
}
}catch (FileNotFoundException fnfe){
}catch (IOException ioe){
}
}
}