java小蒙新求解答!关于循环

img


我是小蒙新,想知道这个应该怎么做,思路越多越好! 1111111111116161651515161661616161616616161

看看这个,理解下他的思路

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