2 c8123 c8123 于 2016.04.04 18:48 提问

菜鸟求助:Java有n个人,1到3报数,报数为3的人退出,最后留下的人原来的标号是多少

import java.util.Scanner;
public class Yuesefu{
public static void main(String ags[]){
Scanner gain=new Scanner(System.in);
System.out.println("请输入总共的人数:");
int length=gain.nextInt();//从键盘获取数组的长度
boolean a[]=new boolean[length];
//将数组a的初始值设为true
for (int i = 0;i < a.length; i++)
a[i]=true;
for(int j=0;j<=a.length-1;j++){
if(a[j]==true)
if(j%3==0)
a[j]=false;
}
System.out.println("最后留下的是原来的");
for(int i=0;i<a.length;i++){
if(a[i]==true)
System.out.print((i+1)+"号,");
}
}
}
如何改正,求高手

4个回答

AinUser
AinUser   2016.04.05 08:48

public class Increase {

public static void rep(boolean[] people) {
    int i = 0,j=0,n=people.length,m=n;
    while(n>2){
        i=++i%m;
        if (people[i] == true){
            j++;
            if (j==3){
                people[i] = false;
                System.out.println(i);
                n--;//总人数减1
                j = 0;//到3从头数
            }
        }
    }
}

public static void main(String[] args) {
    boolean people[] = new boolean[10];
    for(int i = 0; i<10; i++){
        people[i] = true;
    }
    rep(people);
}

}

u012702850
u012702850   2016.04.04 18:52
c8123
c8123 解决了,谢谢
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.04 18:51
qq_34108945
qq_34108945   2016.04.04 19:37

if (j% 3 == 0)这一行改成j+1试试,你的数组下标是从0开始,及j=0时,j%3==0,你这题就这个地方漏了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
有n个人围成一圈,顺序排号。从第一个人开始报数(从1报到3),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
有N个人围成一圈,顺序排号。从第一个开始报数,(从1到3报数),凡报道3的人退出圈子,问最后留下的是原来第几号那位
有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数) 凡报到3的人,退出圈子,问最后留下的那位,是原来的第几号。
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。
文章标题n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出圈子,问最后留下来的是原来几号的那位?
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
n人站圈报数,3 出列。 最后留下的人原来的位置 3种方式
【约瑟夫环】Java实现:100个人开始从1开始报数,每当报数到3,报数3的人离开,求最后留下来人的位置。