Что касается битовой начинки для Java
Я программирую назначение для передачи данных с вставкой битов, в котором инвертированный бит будет добавлен к потоку данных при передаче 5 идентичных битов (т. Е. После 5 "0" будет добавлено "1"; 5 "1", будет добавлено" 0 "). Я знаю, как получить немного из исходного текстового документа и как записать его в новый текстовый документ. Однако по какой-то причине мои части программирования, касающиеся добавления инвертированных битов, идут не так, похоже, это бесконечный цикл...
вот мой код
static void addBitStuffing(Reader r, Writer w) { //Reader is an object class read the data from an original text document, Writer write the read data to a new text document
int length = 0;
for(; r.hasMoreData(); length++){
}
boolean [] feld = new boolean [length];
int i = 0;
while(r.hasMoreData()){ //hasMoreData check if there is more data in a data stream after the pointer, i.e. if there is none, it would have a value of "false"
boolean bit = r.getNextBit();
w.writeNextBit(bit);
feld[i] = bit;
i++;
if (i >= 4){
if ((feld [i] == true) && (feld[i-1] == true) && (feld [i-2] == true) && (feld [i-3] == true) && (feld [i-4] == true)){
w.writeNextBit(false);
}else{
if((feld [i] == false) && (feld[i-1] == false) && (feld [i-2] == false) && (feld [i-3] == false) && (feld [i-4] == false)){
w.writeNextBit(true);
}
}
}
}
}
1 ответ
Решение
Эти заявления
for(; r.hasMoreData(); length++){
}
вызвать бесконечный цикл. Вы ничего не делаете с Reader внутри цикла, поэтому условие не изменится.