вот мой код(точнее код джавараша):
ArrayList<Integer> arr = new ArrayList<>();
ArrayList<Integer> result = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// String fileName = reader.readLine();
String fileName = "c:/anal.txt";
int[] byteCountArray = new int[256];
try (FileInputStream fileInputStream = new FileInputStream(fileName)) {
while (fileInputStream.available() > 0) {
byteCountArray[fileInputStream.read()] += 1;
}
}
int minCount = Integer.MAX_VALUE;
for (int byteCount : byteCountArray) {
if (byteCount > 0 && byteCount < minCount) minCount = byteCount;
//System.out.println(Arrays.toString(byteCountArray));
}
// System.out.println(minCount);
ArrayList<Integer> resultList = new ArrayList<>();
for (int i = 0; i < byteCountArray.length; i++) {
if (byteCountArray[i] == minCount) resultList.add(i);
}
for (Integer resultItem : resultList) System.out.print(resultItem + " ");
}
я б хотел понять что значат некоторые строчки:
например: byteCountArray[fileInputStream.read()] += 1; что это такое? почему вместо указа индекса тут написано fileInputStream.read(), и зачем к нему прибавлять 1?
еще: почему именно 256 длина массива? и еще : int minCount = Integer.MAX_VALUE; для чего нам понадобилась переная с максимальным размером int?
Storm Spirit 1
27 уровень
можете подсказать?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAExpert
22 января 2021, 16:29
Тип byte от -128 до 127 = 256
byteCountArray[fileInputStream.read()] - любой прочитанный байт будет индексом в массиве
прочитали скажем в файле байт 224 (а русская)
прибавляем единицу к количеству букв (а) byteCountArray[224] += 1 и так с каждым байтом который встречаем
+2
Vlados
22 января 2021, 16:13
1. Почему размер массива 256?
В алфавит мощностью 256 символов можно поместить практически все символы, которые есть на клавиатуре.
2. Эта строка byteCountArray[fileInputStream.read()] += 1; означает, что байт, который будет прочитан (какое-то число) будет индексом в массиве и количество его повторов будет увеличиваться в ячейке под этим индексом на 1 с каждым совпадением.
3. Integer.MAX_VALUE используется для того, чтобы указать начальное количество повторов для байта. Так как мы изначально не знаем минимальное количество, то мы задаем значение максимальное
+4
Storm Spirit 1
22 января 2021, 16:29
владос ты чтоли?)
0
Storm Spirit 1
22 января 2021, 16:30
спасибо, понял
0
Юличка
24 июля 2021, 17:27
ох как туго зашло, но кажется я поняла. спасибочкиииии
0