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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[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));
	}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马