package com.javarush.task.task18.task1821;
import java.io.FileReader;
import java.io.IOException;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) throws IOException {
int[] chars = new int[126 - 31]; // массив на все Eng ASCII
try (FileReader fr = new FileReader(args[0])) {
while (fr.ready()) {
int num = fr.read();
if (num >= 32 && num <=126) {
++chars[num - 32]; // инкремент значения ячейки массива (-32, чтобы Space, например попадал в [0])
}
}
}
for (int i = 0; i < chars.length; i++) {
if (chars[i] != 0) {
System.out.println((i + 32) + ": " + (char) (i + 32) + " " + chars[i]); // +32, чтобы воостановить кок ASCII
}
}
}
}
для файла с содержимым:
Something wrong!
a"", ~;
вывод:
32: 2
33: ! 1
34: " 2
44: , 1
59: ; 1
83: S 1
97: a 1
101: e 1
103: g 2
104: h 1
105: i 1
109: m 1
110: n 2
111: o 2
114: r 1
116: t 1
119: w 1
126: ~ 1
Process finished with exit code 0
Ну то есть вывод отстортирован по возрастанию... А валидатор утверждает, что нет...
Andrey
29 уровень
я что-то не так делаю? или проблема с валидатором?
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
29 марта 2022, 21:45решение
Не совсем понятно зачем нужен был весь этот колхоз с - 31, - 32, + 32 и тд. Можете просто убрать все лишнее и будет нормально. А так перевод строки потеряли
+2
Andrey
29 марта 2022, 22:04
https://www.ibm.com/docs/en/cobol-zos/6.1?topic=sequences-us-english-ascii-code-page
Если я правильно понимаю '\n' не входит в Eng ASCII.
Да и валидатор не на это ругается, а на то, что вывод неотсортирован...
0
KIRAРазработчик в prosv.ruExpert
29 марта 2022, 22:15
Входит, они их пропустили, а по какой причине не указали.
US-ASCII (basic English)
American Standard Code for Information Interchange
Он не отсортирован, потому что не хватает части
0
Andrey
29 марта 2022, 22:18
Хотя... Вероятно Вы правы) Потому, что когда я решил задачу через TreeMap, в выводе в самом начале был непечатаемый символ, вероятно как раз '\n'.
0
Andrey
29 марта 2022, 22:20
Спасибо)
0
KIRAРазработчик в prosv.ruExpert
29 марта 2022, 22:24полезный
Пропустили всего скорее из за
Codes 0 through 31 and 127 (decimal) are unprintable control characters.
Управляющие символы убрали, а 0 остался потому что с него начинали и по этой же причине в списке 127 элементов (нету DEL) хотя их 128
+1