A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 烟花雨 中级黑马   /  2013-11-1 16:56  /  835 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 烟花雨 于 2013-11-1 19:17 编辑

import java.util.LinkedList;

public class DuiZhan {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                duilei d = new duilei();
                d.add("abc");
                d.add("abf");
                d.add("abg");
               
                d.get();
        

        }

}

class duilei {
        private LinkedList list = new LinkedList();

        public void add(Object e) {
                list.addFirst(e);
        }

        public void get() {

                if (list.isEmpty())
                        System.out.println("为空");
                else {
                        for (int i = 1; i <= list.size(); i++)
                                System.out.println(list.removeLast());
                }
        }
}

输出:
abc
abf


上面的程序为什么加入了三个元素,到输出的时候只输出两个呢??用while循环语句能全输出,求解释。。。。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
    list.size();是可变的。删除一个元素,list.size();就减少1.所以你应该先把原有的list.size()值存下来再for循环。
修改代码如下:
  1. else {
  2.                         int len = list.size();
  3.                                                 for (int i = 0; i <len; i++)
  4.                               System.out.println(list.remove());
  5.                                                                
  6.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
你循环输出的时候从角标为1开始输出的。但是add("abg")是加到队头,角标为0.
所以循环输出时不会输出这个元素。
看下图,修改下循环初始位置就行了



回复 使用道具 举报
int i 是初始化是1 的话。  那么 。  第一次是1  第二次 是2  第三次 是3   3不小于3了  所以 就跳出了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马