первый раз плакат здесь. Заранее спасибо за просмотр моего вопроса. У меня куча проблем с домашним заданием, в котором я должен прочитать определенный диапазон байтов из RandomAccessFile, а затем проверить этот диапазон байтов, чтобы увидеть, равны ли они 0. Я просмотрел все в поисках чего-то, что относится к этому, но ничто из того, что я нашел, не попадает в точку. Любая оказанная помощь будет оценена.
Задача говорит нам о том, что существует некий файл, содержащий данные о гипотетических учениках школы. Каждый из этих учеников представлен 40 байтами кода, но первые четыре байта нашего файла должны быть целым числом с общим количеством учеников в школе (допустим, их 75). Байты с 4 по 43 представляют первого ученика (#0), 44-83 представляют второго (#1) и так далее. Когда учащийся переходит в другую школу, его 40 байт перезаписываются всеми нулями (символами).
Я написал метод под названием «transferStudent», который принимает строку, представляющую имя файла, и целое число, представляющее количество студентов. Если есть какие-либо исключения или если файл по какой-то причине не перезаписывает данные учащегося, я возвращаю false;
Вот моя работа на данный момент:
public static Boolean transferStudent(String fileName, int studentNum) {
RandomAccessFile file = new RandomAccessFile(fileName, "rw");
file.writeInt(75);
try {
if (studentNum == 0) {
file.seek(4);
file.writeBytes("0000000000000000000000000000000000000000"); // 40 zero characters
file.seek(4);
for (int i = 0; i < 40; i++) {
if (file.read() == 0) {
return true;
}
}
return false;
}
else if (studentNum > 0) {
file.seek(4 + (studentNum * 40));
file.writeBytes("0000000000000000000000000000000000000000"); // 40 more zeroes
file.seek(4);
for (int i = (4 + (studentNum * 40)); i < (44 + (studentNum * 40)); i++) {
if (file.read() == 0) {
return true;
}
}
return false;
}
else {
return false;
}
}
catch (Exception e) {
return false;
}
}
Всякий раз, когда я просматриваю созданный двоичный файл, в диапазоне, соответствующем studentNum, действительно есть 0. Однако консоль всегда выводит false — проверка почему-то не работает. Я на грани того, чтобы рвать на себе волосы из-за этого. Пожалуйста помоги!