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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢其龙 黑马帝   /  2012-1-5 16:29  /  2733 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 卢其龙 于 2012-1-10 15:05 编辑

看到视频说for与while的主要区别是增量变量在内存中的生存期

我不赞同
for和while能完全互用我赞同.
---------------------------------------------------------------------------
for 与 while 的主要区别在于循环次数是否已知或未知.

例如:1+2+3+4+.....+100=?
我们可以确定她的循环次数是100次那我们就用for

int sum=0;
for ( int i=1 ; i <= 100; i++)
{
sum += i;
}

例如:获得用户输入的数字求和.如果输入为0则结束.
我们不知道用户会输入多少次,则用while更好

由于在学java就用c#来写吧

using System;


namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;                                                           //总数
            int val = Convert.ToInt32(Console.ReadLine());     //获得用户如入的值(由于演示没有加判断是否为数值)

            while ( val != 0)                                                      //如果不为0则循环
            {
                sum += val;                                                      //总数 += 输入的值
                Console.WriteLine(sum.ToString());                   //显示出来
                val = Convert.ToInt32(Console.ReadLine());     //在得到用户输入的值
            }

            
            Console.ReadKey();
        }
    }


不知道大家对我的看法怎么样?

  
-----先发布在Java讨论区.看到这里比较活跃.在copy一帖

7 个回复

倒序浏览
回复 使用道具 举报
楼主发了很多这类的帖子,顶一下你的学习方法
我还是赞同视屏里的说法的
有个说法叫 用while能实现的循环用for也能实现,比如:for里的test也可以是val != 0

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
何必在乎这么多,我觉得那个顺手用那个看具体情况,具体使用
回复 使用道具 举报
for 与 while 的主要区别在于循环次数是否知道,还有毕老师在讲Iterator是就举了个例子,
while循环,
  1. Iterator it = al.iterator();
  2.         while(it.hasNext()){
  3.                 System.out.println(it.next());
  4.         }

  5.         it指向了一个对象,循环结束后it还在内存中,

  6.         而for循环
  7.         for(Iterator it = al.iterator();it.hasNext()){
  8.                 System.out.println(it.next());
  9.         }
  10.                   it是个局部变量,for循环结束后,it就释放了
复制代码
我觉得可以根据情况,和跟人喜好去写

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
如果在循环中需要定义变量来控制循环的次数。同时,该变量只为控制循环次数存在。循环结束,该变量就没有意义了。
那么这时建议使用for循环。while是循环结束以后这个对象还在。
考虑到内存优化的话用for好一点,但是一般while能完成的循环for也可以完成。
回复 使用道具 举报
张伟~ 黑马帝 2012-1-5 23:15:03
7#
楼主写的那段代码相信用for循环一样能完成的,就像黄湘怡同学举得那个迭代器的例子。
把while循环改成for(int val = Convert.ToInt32(Console.ReadLine());val!=0; ){}应该就OK了。
如果写错了还请各位大哥以及老师改正,我表示我也是个初学者。。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
Iterator it = al.iterator();
        while(it.hasNext()){
                System.out.println(it.next());
        }

        it指向了一个对象,循环结束后it还在内存中,

        而for循环
        for(Iterator it = al.iterator();it.hasNext()){
                System.out.println(it.next());
        }
                  it是个局部变量,for循环结束后,it就释放了
-----------------------------------------------------------------------------------
那我把上面的代码修改一下呢! 如下

Iterator it = al.iterator();
        while(it.hasNext()){
                System.out.println(it.next());
        }

        it指向了一个对象,循环结束后it还在内存中,

        而for循环
       Iterator it;
        for( it = al.iterator();it.hasNext()){
                System.out.println(it.next());
        }

哈哈还怎么说呢?
                  it是个局部变量,for循环结束后,it就释放了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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