黑马程序员技术交流社区

标题: FIFO方式输出容易出现的错误 [打印本页]

作者: Fc10232    时间: 2012-5-16 00:36
标题: FIFO方式输出容易出现的错误
package it.cast.demo;
import java.util.LinkedList;
public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> link = new LinkedList<String>();
        link.add("A");
        link.add("B");
        link.add("X");
        link.add("Y");
        System.out.println("以FIFO的方式输出");
        for(int i = 0;i<link.size();i++){
            System.out.print(link.poll()+"、");
        }
    }
}


以上程序的结果:A、B、X





作者: Fc10232    时间: 2012-5-16 00:36
{:soso__8961432591078930798_3:}
版主加分呀 ·····
作者: 云惟桉    时间: 2012-5-16 00:56
for(int i = 0;i<link.size();i++){
            System.out.print(link.poll()+"、");
}

楼主主要错误就出在这个循环上,其实还不好发现,呵
每次循环过后执行完link.poll,一个元素就移出队列了,那么link.size就会发生改变,变化如下:
             移除前link.size()          link.poll()       移除后link.size()
(i  =  0  ):      4                           A                     3
(i  =  1  ):      3                           B                     2
(i  =  2  ):      2    //此时不满足 i < link.size()条件了,跳出循环
所以结果就输出了A和B

我用楼主代码输出结果是A和B,至于楼主说的出现A B X,我想也许是你的条件当时用的是i<=link.size()吧
希望能帮到你。
作者: Fc10232    时间: 2012-5-16 01:01
云惟桉 发表于 2012-5-16 00:56
for(int i = 0;i

嗯  说的很对。。:lol

作者: Fc10232    时间: 2012-5-16 01:01
云惟桉 发表于 2012-5-16 00:56
for(int i = 0;i

嗯  说的很对。。:lol

作者: Fc10232    时间: 2012-5-16 01:04
本帖最后由 Fc10232 于 2012-5-16 01:06 编辑

哇······················UID是什么?  我的好顺------>22222C:%5CUsers%5CAdministrator%5CDesktop




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2