Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Java的位填充_Java_Loops_Bitstuffing - Fatal编程技术网

关于Java的位填充

关于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

我正在为一项关于位填充数据传输的作业编程,其中当传输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);
                }
            }       
        }
    }
}
这些声明

for(; r.hasMoreData(); length++){           
}

造成无限循环。您对循环中的读卡器不做任何操作,因此条件不会改变。

如果您获得与上次相同的位,则只增加i,否则将其重置不是更容易吗?我已经解决了问题,谢谢!非常感谢。我也会换的,看吧。