帮我用java写一个约瑟夫环
时间: 2024-05-01 11:22:10 浏览: 7
好的,以下是Java实现约瑟夫环的代码:
```
import java.util.*;
public class JosephusProblem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入总人数:");
int n = sc.nextInt();
System.out.println("请输入报数的上限:");
int m = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
int index = -1; // 当前报数的人在List中的下标
while (list.size() > 1) {
index = (index + m) % list.size(); // 根据报数的上限计算下一个报数的人的下标
System.out.println("第" + list.get(index) + "个人出列");
list.remove(index); // 报数的人出列
index--; // 下一个报数的人的下标需要减一
}
System.out.println("最后留下的是第" + list.get(0) + "个人");
}
}
```
运行结果如下:
```
请输入总人数:
10
请输入报数的上限:
3
第3个人出列
第6个人出列
第9个人出列
第2个人出列
第7个人出列
第1个人出列
第8个人出列
第5个人出列
第10个人出列
最后留下的是第4个人
```