黑马程序员技术交流社区
标题:
【黑马程序员】报数字游戏
[打印本页]
作者:
huburt
时间:
2016-5-20 21:46
标题:
【黑马程序员】报数字游戏
------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
复制代码
public static void main(String[] args) {
System.out.println("最后留下的是第" + play(100, 14) + "人。");
}
/**
* @param peoples
* 玩游戏的人数
* @param number
* 报的数字
* @return 最后留下一个人的序号
*/
public static Integer play(int peoples, int number) {
// 创建集合,赋值1~number的数字,代表玩游戏的人的序号
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= peoples; i++) {
list.add(i);
}
// 指针,代表报数的人的位置
int pointer = 0;
// 报数的数字
int count = 1;
// 游戏结束点:最后留下一个人
while (list.size() > 1) {
// 指针超过集合长度,表示完成1轮报数,第一个人继续报数
if (pointer == list.size()) {
// 指针回到第一个人
pointer = 0;
}
// 报数14,
if (count % number == 0) {
// 查看每一个报到指定数字的人
// System.out.println("退出的是第" + list.get(pointer) + "人");
// 报到指定数字的人退出游戏
list.remove(pointer);
// 有人退出,集合长度就会减少,原本退出位置的后一位向前移,因此还是从退出位置开始报数
// pointer++;//不需要!
// 重新从1开始报数
count = 1;
} else {
// 没有报到14的,指针往后移动
pointer++;
// 报数加1
count++;
}
}
//返回最后剩下的人的序号
return list.get(0);
}
复制代码
作者:
cxl1694095035
时间:
2016-5-20 21:47
楼主给力,赞一个
作者:
okchenyang44
时间:
2016-5-20 22:28
楼主给力,赞一个
作者:
sasyun
时间:
2016-5-20 22:29
赞一个
作者:
Deleba
时间:
2016-5-20 22:39
楼主给力,赞一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2