黑马程序员技术交流社区

标题: 数组的小问题 [打印本页]

作者: 郑强强    时间: 2012-4-6 21:38
标题: 数组的小问题
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, 下载次数: 44)

4.JPG

作者: 刘士    时间: 2012-4-6 22:05
  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. }
复制代码

作者: 冯瀚冰    时间: 2012-4-6 22:16
                while(num>0);
也就是13行位置,不应该加分号的,楼主这样加完就无线循环,把分号去掉就好了
作者: 黄长利    时间: 2012-4-6 22:26
本帖最后由 黄长利 于 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());
        }


}

其实遇到这种代码,你要是不仔细看的话确实很郁闷,但是你可以从屏幕上的显示知道,程序应该是陷入了一个无限循环之中,
代码本身语法上时没有问题的,这时就判断循环语句,以及循环的条件,包括是否有循环体,也就是那个分号结束符的问题了

作者: 李节起    时间: 2012-4-6 22:51
老毕在后面视频中,说过一句话:语句要么以分号(;)结束,要么以大括号(})结束···也算一种理解方法··{:soso_e130:}
作者: 郑强强    时间: 2012-4-6 22:52
黄长利 发表于 2012-4-6 22:26
class ArrayTest5
{
        public static void main(String[] args)

谢谢了,是我太粗心了,以后会注意的

作者: 郑强强    时间: 2012-4-6 22:55
李节起 发表于 2012-4-6 22:51
老毕在后面视频中,说过一句话:语句要么以分号(;)结束,要么以大括号(})结束···也算一种理解方法 ...

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2