黑马程序员技术交流社区

标题: N个人为成一圈报数3的倍数退圈那个题 [打印本页]

作者: &天马星空ぁ    时间: 2016-9-19 22:45
标题: N个人为成一圈报数3的倍数退圈那个题
[Java] 纯文本查看 复制代码
package day07;
//有N(控制台输入)个人围成一个圈,从第一个人开始报数,报的数是3的倍数的人退出圆圈,问最后剩下的是第几个人
import java.util.ArrayList;
import java.util.Scanner;

public class Demo01 {
        //定义一个存放人编号的集合,并输入一共有多少人
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入有多少个人");
                int num = sc.nextInt();
                ArrayList<Integer> list = new ArrayList<Integer>();
                addList(list, num);
                removeList(list);
        }
        //把人们的编号添加到集合中
        public static void addList(ArrayList<Integer> list, int num) {
                for (int i = 1; i <= num; i++) {
                        list.add(i);
                }
        }
        //创建退出圈人的方法
        public static void removeList(ArrayList<Integer> list) {
                //定义为人说报的数字,num为人编号所对应的索引
                for (int i = 1, num = 0;; i++, num++) {
                        if (num < list.size() && i % 3 == 0) {
                                list.remove(num);
                                num--;
                        } else if (list.size() == 1) {
                                break;
                        } else if (num > list.size() - 1) {
                                num = -1;
                                i--;
                        }
                }
                System.out.println(list.get(0));
        }
}






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