Написал простой и лаконичный код, сортировку по ASCII проверил совпадает, значение символа и частота то же соответствует. Ума не приложу где ошибка.
public class Solution {
public static void main(String[] args) {
ArrayList<Integer> ari = new ArrayList<>();
try {
FileReader reader = new FileReader(args[0]);
while (reader.ready()) {
int data = reader.read();
ari.add(data);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
// System.out.println(ari.toString());
Collections.sort(ari);
//System.out.println("Размер файла байт " + ari.size());
//System.out.println(ari.toString());
//System.out.println(Character.toChars(ari.get(2)));
int count = 1;
for (int i = 0; i < ari.size() - 1; i++) {
// if (ari.get(i-1)<32 || ari.get(i-1)>127) continue;
if (ari.get(i) > 128) continue;
if (Objects.equals(ari.get(i), ari.get(i + 1)))
count++;
if (!Objects.equals(ari.get(i + 1), ari.get(i))) {
//System.out.print(ari.get(i - 1) + "'" + Arrays.toString(Character.toChars(ari.get(i - 1))).substring(1,2) + "'=" + count + ", ");
System.out.println(Arrays.toString(Character.toChars(ari.get(i))).charAt(1) + " " + count);
count = 1;
}
}
//код, который отдельно проверяет последний элемент отсортированного массива с предпоследним элементом
//если последний элемент массива уникальный и в таблице ascii менше значения 128 то выведи его на экран
if (!Objects.equals(ari.get(ari.size() - 2), ari.get(ari.size() - 1)) && ari.get(ari.size() - 1) < 128)
System.out.println(Arrays.toString(Character.toChars(ari.get(ari.size() - 1))).charAt(1) + " " + 1);
}
}package com.javarush.task.task18.task1821;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Objects;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) {
ArrayList<Integer> ari = new ArrayList<>();
try {
FileReader reader = new FileReader(args[0]);
while (reader.ready()) {
int data = reader.read();
ari.add(data);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
Collections.sort(ari);
// System.out.println("Размер файла байт " + ari.size());
// System.out.println(ari.toString());
//System.out.println(Character.toChars(ari.get(2)));
int count = 1;
for (int i = 1; i < ari.size(); i++) {
// if (ari.get(i-1)<32 || ari.get(i-1)>127) continue;
if (ari.get(i-1)>127) continue;
if (Objects.equals(ari.get(i - 1), ari.get(i)))
count++;
if (!Objects.equals(ari.get(i - 1), ari.get(i))) {
// System.out.print("'" + Arrays.toString(Character.toChars(ari.get(i - 1))).substring(1,2) + "'=" + count + ", ");
System.out.println(Arrays.toString(Character.toChars(ari.get(i - 1))).charAt(1) + " " + count);
count = 1;
}
}
}
}