1 2 3 4 5 6 7 8 9 10 ....
3 6 9 12 15 18 可以看一下这些都是3 的倍数
我的思路是
1、将 一个数组 储存这些数据, 然后 用 while(isFlag = false)一个变量,里面再来一个for循环,如果下标是3的倍数一直移除
2、然后剩下14个,重新排序这个数据,得到 1 2 4 5 7 8 10 11 13 14 16 17 19 20
3、因为while循环还在, 下标 是 3 的倍数继续 ,一直得到后面的数
4、这样就知道哪个数啦
1、定义一个Person类带一个属性number如下:
public class Person {
public int number;
public Person(int number) {
this.number = number;
}
}
2、在测试类main方法中创建一个集合list存储20个Person对象number按照1-20,然后开始报数游戏,进入循环将报3的从集合中移除剩余一个时结束循环即可
public class Test {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
list.add(new Person(i+1));
}
int i = 1;
int index = 0;
while (list.size() > 1) {
if (i == 3) {
if (index > list.size() - 1) {
index = index % list.size();
}
list.remove(index);
i = 0;
index--;
}
i++;
index++;
}
Person p = list.get(0);
System.out.println(p.number);
}
}