package com.pb.demo1;import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 一群人围成一圈从123报数,如果报到3就退出该圈中,直到最后一个人留下来!* 约瑟夫的游戏*/ public class Demo1 {public static void main(String[] args) {//声明值一个扫描器的变量Scanner input =new Scanner(System.in);System.out.println("请输入参数游戏的人数:");String str=input.next();//判断是不是数字String regx="\\d+";Pattern p=Pattern.compile(regx);Matcher m=p.matcher(str);int num=0;if(m.matches()){//如果是数字就转换为数字num=Integer.parseInt(str);}else{//如果不是数字终止System.out.println("输入的不是数字:结果为0");return ;}//为每个人编号List<Integer> list=new ArrayList<Integer>();for (int i = 0; i < num; i++) {//编号从一开始list.add(i+1);}//定义游戏要退出的变量int cursor=0;//开始游戏只到最后一人是结束while(list.size()>1){for (int i = 0; i <list.size(); i++) {//游戏开始游标+1cursor++;if(cursor%3==0){list.remove(i);//游标重新开始并归零cursor=0;//人数-1i--;}}}System.out.println("集合的大小:"+list.size());System.out.println("最后的人编号是:"+list.get(0));}}