A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张甲甲 于 2013-5-24 13:28 编辑

我想做一个这样的题目:
500个人手拉手拉一圈,数数,数到3的人就去掉,知道最后只留一个人,问那个人是第几个人,输出位数????
一下是代码 编译没问题就是不出结果。。。
大神们帮着看看吧 让我这种菜鸟也进步进步。。。

public class MyTest {
        public static void main (String args[]){
                boolean a[]=new boolean[500];
                for(int i=0;i<a.length;i++){
                        a=true;
                }
                int number=a.length;
                int index=0;
                int count=0;
                while(a.length>1){
                        if(a[index]==true){
                                count++;
                                if(count==3){
                                        count=0;
                                        a[index]=false;
                                        number--;
                                }
                        }
                }        
                index++;
                if(index==a.length){
                        index=0;
                }
                for(int i=0;i<a.length;i++){
                        if(a=true){
                                System.out.print("i :"+i);
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
你这代码还能编译通过,你a是一个boolean的数组,能a=true?
你既然已经定义了number=arr.length,就压迫使用number,而不是又去使用arr.lemgth
你的index++和之后的if语句写在了while的外面,就这么点小问题,修改代码如下:
public class MyTest {
        public static void main(String args[]) {
                boolean a[] = new boolean[500];
                for (int i = 0; i < a.length; i++) {
                        a[i] = true;
                }
                int number = a.length;
                int index = 0;
                int count = 0;
                while (number> 1) {
                        if (a[index] == true) {
                                count++;
                                if (count == 3) {
                                        count = 0;
                                        a[index] = false;
                                        System.out.println(index+"号出局");
                                        number--;
                                }
                        }
                        index++;
                        if (index == a.length) {
                                index = 0;
                }
                }
                for (int i = 0; i <number; i++) {
                        if (a[i] = true) {
                                System.out.print("最终获胜的人" + (i+1));
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 不错 优秀

查看全部评分

回复 使用道具 举报
非常好继续努力
回复 使用道具 举报
如果帖子的问题已经解决,请把帖子的类型改为已解决,如果不知道咋改就看我的个性签名

评分

参与人数 1技术分 +2 收起 理由
曹睿翔 + 2 这是云4的第一万的贴!给力

查看全部评分

回复 使用道具 举报
年轻的棒棒 发表于 2013-5-23 08:00
你这代码还能编译通过,你a是一个boolean的数组,能a=true?
你既然已经定义了number=arr.length,就压迫使 ...

谢谢指点。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马