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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧阳文愿 黑马帝   /  2011-11-1 11:13  /  4227 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 欧阳文愿 于 2011-11-23 16:04 编辑

昨天和今天一直在看那个控制语句,不好意思,小弟基础差,怕问出的问题让大家笑话,关于循环的问题,书上说循环语句的三种形式在表达上是等价的,也就是说任何一个循环都可以用这三种形式表示,while循环可以转换成for循环,for也能转换成while循环对吧,例如:
  1. int sum =0;
  2. int i =0       
  3. while (sum<1000)
  4. {
  5.         sum =sum+i;
  6.         i++;
  7.                 }
  8. System.out.println("sum="+sum);
复制代码
while循环转换成for循环:
  1. int sum =0;
  2.                 for (int i =0;sum<=1000 ;i++ )
  3.                 {
  4.                         sum += i;
  5.                 }
  6.                
  7.                 System.out.println("sum="+sum);
复制代码
再看for循环转换成while循环:               
{              int num=0;
                        for(int i=0;i<10;i++){
                        if(i%3==0)continue;
                        sum += i;                 }
                                 System.out.println("sum="+sum);


而for转换成while就出问题,为什么呢?
int sum=0;       
while (i<10)
                {
                        if(i%3==0)continue;
                        sum =sum+ i;
                        i++;
                }
System.out.println("sum="+sum);

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 不懂就问没人笑的。

查看全部评分

11 个回复

倒序浏览
{:soso_e136:}没看懂你第三段代码
   int num=0;
的作用。
回复 使用道具 举报
下面的说是for转换成while,怎么两个都是while
回复 使用道具 举报
本帖最后由 黄晓天 于 2011-11-1 11:50 编辑

哥们,你的这一句“if(i%3==0)continue”会造成一个死循环,你把这句去掉,程序就可以得到sum了。
你运行一下下面的代码,看是否是你想要的:

class SumDemo
{
        public static void main(String[] args)
        {
                int i=1;
                int sum=0;
                while (i<10)
        {              
                        sum+=i;
                        System.out.print("\tsum="+sum);
                        if(i%3==0)
                        {
                                System.out.println();
                          
                        }
                    i++;
                                 
                    
         
                         
        }
      

        }
}
回复 使用道具 举报
continue在循环语句中的作用,是结束当前循环,进入下次循环的判断,在上面的代码,下面的代码执行不到,所以 i 的值不被改变,会一直循环下去。
回复 使用道具 举报
不好意思,第三段代码复制错了,刚才,不知道是不是我这网络的问题,我再csdn写的日记发布不了,我点了一下返回,写了了一个上午,白忙了,郁闷
回复 使用道具 举报
刘福双 黑马帝 2011-11-1 12:25:49
7#
本帖最后由 刘福双 于 2011-11-1 12:32 编辑

int sum=0;        
int i=0;
while (i<9)//由于先i++,所以这里应该改成9。
                {
                        i++;
                        if(i%3==0)continue;
                        sum =sum+ i;
                }
System.out.println("sum="+sum);




只要把i++;放到上面就可以防止continue死循环造成程序错误。
找好逻辑先后顺序就很简单了。
回复 使用道具 举报
黄晓天 黑马帝 2011-11-1 13:02:06
8#
刘福双,要是不去掉continue,程序依然是死循环,当i=3的时候
回复 使用道具 举报
黄晓天 黑马帝 2011-11-1 13:02:34
9#
刘福双,要是不去掉continue,程序依然是死循环,当i=3的时候
回复 使用道具 举报
本帖最后由 刘福双 于 2011-11-1 13:16 编辑

呵呵  你验证一下!while循环成立 i++;然后在判断continue(终止本次循环,继续下次循环),跳到while重新循环,而 "i" 的值变了!
回复 使用道具 举报
嗯,我调试了一下,确实是我错了,以后长交流哦!
回复 使用道具 举报
嗯,我调试了一下,确实是我错了,以后长交流哦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马