关于Java的位填充
我正在为一项关于位填充数据传输的作业编程,其中当传输5个相同的位时,将向数据流添加一个反向位,即在5 0之后,将添加一个1;5 1,将添加一个0。 我知道如何从原始文本文档中获取一些信息,以及如何将其写入新的文本文档。然而,由于某种原因,我的编程部分关于添加反向位出错,这似乎是一个无休止的循环 这是我的密码关于Java的位填充,java,loops,bitstuffing,Java,Loops,Bitstuffing,我正在为一项关于位填充数据传输的作业编程,其中当传输5个相同的位时,将向数据流添加一个反向位,即在5 0之后,将添加一个1;5 1,将添加一个0。 我知道如何从原始文本文档中获取一些信息,以及如何将其写入新的文本文档。然而,由于某种原因,我的编程部分关于添加反向位出错,这似乎是一个无休止的循环 这是我的密码 static void addBitStuffing(Reader r, Writer w) { //Reader is an object class read the data from
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);
}
}
}
}
}
这些声明
for(; r.hasMoreData(); length++){
}
造成无限循环。您对循环中的读卡器不做任何操作,因此条件不会改变。如果您获得与上次相同的位,则只增加i,否则将其重置不是更容易吗?我已经解决了问题,谢谢!非常感谢。我也会换的,看吧。