黑马程序员技术交流社区

标题: for 与 while 的区别的看法 [打印本页]

作者: 卢其龙    时间: 2012-1-5 16:29
标题: for 与 while 的区别的看法
本帖最后由 卢其龙 于 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一帖
作者: 卢其龙    时间: 2012-1-5 16:30

作者: 罗利民    时间: 2012-1-5 17:36
楼主发了很多这类的帖子,顶一下你的学习方法
我还是赞同视屏里的说法的
有个说法叫 用while能实现的循环用for也能实现,比如:for里的test也可以是val != 0
作者: 沈样    时间: 2012-1-5 18:01
何必在乎这么多,我觉得那个顺手用那个看具体情况,具体使用
作者: 黄湘怡    时间: 2012-1-5 18:51
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就释放了
复制代码
我觉得可以根据情况,和跟人喜好去写
作者: 李玉杰    时间: 2012-1-5 20:34
如果在循环中需要定义变量来控制循环的次数。同时,该变量只为控制循环次数存在。循环结束,该变量就没有意义了。
那么这时建议使用for循环。while是循环结束以后这个对象还在。
考虑到内存优化的话用for好一点,但是一般while能完成的循环for也可以完成。
作者: 张伟~    时间: 2012-1-5 23:15
楼主写的那段代码相信用for循环一样能完成的,就像黄湘怡同学举得那个迭代器的例子。
把while循环改成for(int val = Convert.ToInt32(Console.ReadLine());val!=0; ){}应该就OK了。
如果写错了还请各位大哥以及老师改正,我表示我也是个初学者。。
作者: 卢其龙    时间: 2012-1-6 00:00
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就释放了




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