Скажите, пожалуйста, если файл пустой, то min = -1?
С таким фрагментом кода задачу валидатор принял.
int min = fis.read(), current = 0;
while (fis.available() > 0) {
if ((current=fis.read()) < min) {
min = current;
}
}
А вот с таким - нет.
int min = fis.read(), current = 0;
while ((current = fis.read()) !=-1) {
if (current< min) {
min = current;
}
}
Это потому, что fis считал первый байт, равный -1, а потом ушёл в бесконечный цикл?
И что тогда читает метод read из пустого файла?
Serge Ve
20 уровень
Если файл пустой, то min = -1?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
14 ноября 2018, 15:59
Если честно, то в обоих случаях меня смущает чтение из файла вне цикла. Но внятно объяснить почему приняло первый кусок кода я тоже затрудняюсь.
В случае с нулевым файлом оба решения вернут -1 и мне кажется, что это не валидный результат.
Судя по вики, байт (состоящий из 8 бит) может принимать 256 разных состояний (2^8) что и есть 0-255, -1 получается 257-е состояние.
На не нулевых файлах оно вполне должно работать конечно.
Единственное что мне приходит на ум - валидатор проверял непосредственно наличие while (fis.available() > 0).
Вообще, если кто то сможет объяснить эту самую -1 буду признателен.
+1
--------Master
14 ноября 2018, 09:31
Если достигнут конец файла, то read() возвращает -1
0
Serge Ve
14 ноября 2018, 09:36
Спасибо. Но почему тогда со вторым вариантом:
валидатор завис на 12 секунд и не принял решение? 0
--------Master
14 ноября 2018, 09:42
Это уже вопрос к валидатору, на вид должно работать, и бегло прогнал тестом - точно так же находит минимальный байт...
+1
Serge Ve
14 ноября 2018, 09:43
Спасибо.
0