黑马程序员技术交流社区

标题: 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。 [打印本页]

作者: cuisq    时间: 2016-6-8 01:46
标题: 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
看到大家好像做法不一样,是谁理解错了?

package com.itheima;

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

public class Test10 {

        /**
         *
         * 10、 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
         * 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
         *
         */
        public static void main(String[] args) {
                ArrayList<Integer> list = new ArrayList<Integer>(); // 创建集合
                for (int i = 1; i <= 100; i++) { // 遍历添加1-100元素
                        list.add(i);
                }

                int count = 0; // 计数器count
                while (list.size() >= 14) {                                         // 当集合中没有第14个人的时候,终止游戏
                        Iterator<Integer> it = list.iterator(); // 获取迭代器
                        while (it.hasNext()) {                                         // 判断是否还有元素
                                it.next();                                                         // 指针向后移动
                                count++;                                                         // 开始报数,从一开始
                                if (count % 14 == 0) {                                //当报到14的整数倍的时候
                                        it.remove();                                        //这个人退出
                                }                                                                        //下一个人重复,当有遇到第14的时候,退出
                        }
                }

                System.out.println("最后剩下的是原100人中的第:" );
                for (int b : list) {                                                //查看剩下的人是100人中的第几个人
                        System.out.println( "第" + b + "个人");
                }
                System.out.println("最后剩下" + list.size() + "个人");
        }
}





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