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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑强强 中级黑马   /  2012-4-6 21:38  /  2351 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class ArrayTest5
{
        public static void main(String[] args)
        {
                toBin(6);
                //System.out.println("Hello World!");
        }
       
        /*
        十进制-->二进制
        */

        public static void toBin(int num)
        {
                StringBuffer sb=new StringBuffer();//这是一个容器
                while(num>0);
                {
                        //System.out.println(num%2);
                        sb.append(num%2);
                        num=num/2;
                               

                }

                System.out.println(sb.reverse());
        }


}


这是毕老师的代码,我怎么会一直运行不出来呢?郁闷!!求解

4.JPG (20.6 KB, 下载次数: 47)

4.JPG

7 个回复

倒序浏览
  1. class ArrayTest5 {
  2.         public static void main(String[] args) {
  3.                 toBin(6);
  4.                 // System.out.println("Hello World!");
  5.         }

  6.         /*
  7.          * 十进制-->二进制
  8.          */

  9.         public static void toBin(int num) {
  10.                 StringBuffer sb = new StringBuffer();// 这是一个容器
  11.                 while (num > 0)//;[color=Red]这个分号不需要的[/color]。
  12.                 {
  13.                         // System.out.println(num%2);
  14.                         sb.append(num % 2);
  15.                         num = num / 2;

  16.                 }

  17.                 System.out.println(sb.reverse());
  18.         }

  19. }
复制代码
回复 使用道具 举报
                while(num>0);
也就是13行位置,不应该加分号的,楼主这样加完就无线循环,把分号去掉就好了
回复 使用道具 举报
本帖最后由 黄长利 于 2012-4-6 22:27 编辑

class ArrayTest5
{
        public static void main(String[] args)
        {
                toBin(6);
                //System.out.println("Hello World!");
        }
        
        /*
        十进制-->二进制
        */

        public static void toBin(int num)
        {
                StringBuffer sb=new StringBuffer();//这是一个容器
                while(num>0);//此处分号去掉即可
                {
                        //System.out.println(num%2);
                        sb.append(num%2);
                        num=num/2;
                                

                }

                System.out.println(sb.reverse());
        }


}

其实遇到这种代码,你要是不仔细看的话确实很郁闷,但是你可以从屏幕上的显示知道,程序应该是陷入了一个无限循环之中,
代码本身语法上时没有问题的,这时就判断循环语句,以及循环的条件,包括是否有循环体,也就是那个分号结束符的问题了
回复 使用道具 举报
老毕在后面视频中,说过一句话:语句要么以分号(;)结束,要么以大括号(})结束···也算一种理解方法··{:soso_e130:}
回复 使用道具 举报
黄长利 发表于 2012-4-6 22:26
class ArrayTest5
{
        public static void main(String[] args)

谢谢了,是我太粗心了,以后会注意的
回复 使用道具 举报
李节起 发表于 2012-4-6 22:51
老毕在后面视频中,说过一句话:语句要么以分号(;)结束,要么以大括号(})结束···也算一种理解方法 ...

奥,原来是这个原因啊,谢谢喽
回复 使用道具 举报
pray 高级黑马 2014-4-26 03:29:31
8#
就小说艺术的角度而言,这篇帖子不算太成功,但它的实验意义却远远大于成功本身。正所谓:【一马奔腾,射雕引弓,天地都在我心中!】楼主真是英俊潇洒,风流倜傥,玉树临风,年少多金,神勇威武,天下无敌,宇内第一,寂寞高手,刀枪不入,唯我独尊,玉面郎君,仁者无敌,勇者无惧,金刚不坏,英明神武,侠义非凡,义薄云天,古往今来,无与伦比,谦虚好学,不耻下问,聪明伶俐,活泼可爱,待友热情,对敌冷酷,阴险狡诈,无所不为,心狠手辣,无恶不作,对友赴汤蹈火,再所不辞,两肋插刀,枪林弹雨,勇往直前,慷慨大方, 头脑精明,仙福永享,寿与天齐,百折不饶,百打不死,侠中豪杰,人中龙凤,有情有义,有胆有色,举世无双,既酷又帅,人之表率,诚实可信,谈吐大方,风度翩翩,气势凌人,气质高贵,单身贵族,貌赛潘安,智胜孔明,勇比子龙,义超关羽,巧越鲁班,至尊至圣,至高无上,华丽绚烂,英勇无比,道德榜样,千杯不醉,坐怀不乱,知识渊博,才高八斗,傲视众生,世外高人,光明磊落,公正无私,震古烁今,第一大英雄大豪杰大侠客大宗师,急如风,静如林,掠如火,不动如山,号称一朵梨花压海棠,人送绰号天下地无所不能玉面小飞龙,英俊与智慧的化身,侠义与仁义的糅合,前辈高人巨侠是也。楼主真不愧为无厘界新一代的开山怪才!、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马