1

カスタムTCPパケットを格納するためのリンクリストデータ構造を含むプログラムがあります。

テストプログラムはパケットを読み込み、リンクリストキューに追加し、確認のためにパケット値(タイムスタンプ値)をすぐに出力します。このプロセスはwhileループで10回繰り返されるため、リンクリストキューには10個のパケットがあります。

問題は、すべてのパケットが読み込まれた後のキュー値のチェックにあります。問題は、(おそらく)異なる値を持つ他の9つのパケットがあることを知っているにもかかわらず、最後に読み込まれたパケットの値のみが表示されることです。待ち行列。

誰かが私がこの一見黒い魔法を理解するのを手伝ってくれるなら、私は最も感謝するでしょう。

public void readPackets() throws IOException {
    int counter = 1;

    while(counter < 10){
        packet = con.fillWIMPacket(packet);
        packetQueue.add(packet); 
        System.out.println("Packet " + counter + " added to Queue");
        System.out.println("Packet " + counter + " " + packet.toString());
        counter++;
    } 
}



public void printPacketValues(){

    System.out.println("Packet Queue size is " + packetQueue.size());


    for(int i = 0; i < packetQueue.size(); i++){
        System.out.println("Packet " + i + ": " + packetQueue.get(i));
    }

}

最初のreadPackets()のprintln()メソッドが正しい順序でデータを表示していることを明確にする必要があります。ただし、printPacketValues()のprintln()は、最後のパケットの値を10回表示するだけです。

4

1 に答える 1

1
while(counter < 10){
    packet = new PacketType(); //change here and try once.
    packet = con.fillWIMPacket(packet);
    packetQueue.add(packet); 
    System.out.println("Packet " + counter + " added to Queue");
    System.out.println("Packet " + counter + " " + packet.toString());
    counter++;
} 
于 2013-02-15T11:55:46.143 に答える