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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

假设一个羊圈里面有1只羊,羊从第二年开始每年会生一只小羊(没有公母的区别,都生),但是一只羊只能活8年,第九年就死掉了,请问20年后羊圈里有多少只羊?
package born_sheep;

public class Test {
        public static void main(String[] args) {
                Sheeps sheeps = new Sheeps();

                sheeps.run(20);
                System.out.println(sheeps.getSheepNum());

        }
}
---------------------------------------------------------------------------------------------------------------------------------------------
package born_sheep;

public class Sheep {
        private int age;

        public Sheep() {
                this.age = 1;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        @Override
        public String toString() {
                return "Sheep [age=" + age + "]";
        }
       

}

------------------------------------------------------------------------------------------------------------------------------
package born_sheep;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Sheeps {
        int year;
        ArrayList<Sheep> sheeps;

        public Sheeps() {
                sheeps = new ArrayList<Sheep>();

                sheeps.add(new Sheep());
                this.year = 1;
        }

        public void run(int y) {

                while (year < y) {

                        year += 1;// 进入
                        int n = getSheepNum();
                        // 每只羊的年龄+1
                        for (int j = 0; j < n; j++) {
                                sheeps.get(j).setAge(sheeps.get(j).getAge() + 1);
                        }

                        // 遍历
                        for (int k = 0; k < n; k++) {
                                Sheep s = sheeps.get(k);
                                if (s.getAge() > 1 && s.getAge() < 9)
                                        create();//create后原sheeps集合中的元素已增加,下次循环会遍历到1岁的羊,而1岁的羊不能create
                               
                                 else if (s.getAge() == 9) {
                                        dead(k);// dead
                                        k--;// *********指针移动,删除后,index--

                                }
                        }
                        System.out.println("第" + year + "年" + this.getSheepNum());
                }

        }

        public void create() {
                sheeps.add(new Sheep());

        }

        public void dead(int index) {
                sheeps.remove(index);
        }

        public int getSheepNum() {
                return sheeps.size();
        }

        public void print() {
                for (Iterator iterator = sheeps.iterator(); iterator.hasNext();) {
                        System.out.println(iterator.next());

                }

        }

}


sheep.png (71.26 KB, 下载次数: 10)

sheep

sheep

1 个回复

倒序浏览
太长不看,但还是先赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马