黑马程序员技术交流社区

标题: 关于while和for的区别 [打印本页]

作者: 小乎乎    时间: 2015-6-11 00:28
标题: 关于while和for的区别
while和for的区别中:明确循环次数最好用for........理解无能,能举个例子(代码)体现一下那种情况麽
作者: danlyalex    时间: 2015-6-11 00:31
比如说你知道你要打印几次  hello world .你就用for,,如果你不知道你要打印几次,你就用while
作者: 小乎乎    时间: 2015-6-11 00:40
e........太抽象,可否告诉我那啥不明确次数的条件改变语句为何,它为啥不能放for里.........俺要个代码的体现
作者: 时光匆匆    时间: 2015-6-11 00:43
while 和for 可以完全替换的,只是相对用谁更合适 。
作者: 小乎乎    时间: 2015-6-11 00:46
时光匆匆 发表于 2015-6-11 00:43
while 和for 可以完全替换的,只是相对用谁更合适 。

are you sure?我读书少,表骗我喔:o
作者: 时光匆匆    时间: 2015-6-11 00:51
小乎乎 发表于 2015-6-11 00:46
are you sure?我读书少,表骗我喔

哪能够啊
作者: 悦鹏    时间: 2015-6-11 00:55
a:for循环语句和while循环语句可以等价转换,但还是有些小区别的。
           
         b:使用区别:
         
           控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,

           而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。

           原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
   
         c:场景区别:

           for循环适合针对一个范围判断进行操作

           while循环适合判断次数不明确操作

作者: 小乎乎    时间: 2015-6-11 01:13
悦鹏 发表于 2015-6-11 00:55
a:for循环语句和while循环语句可以等价转换,但还是有些小区别的。
           
         b:使用区别:

总结得好好阿!!!道理我都懂了,其实我就是想知道次数不明确的代码怎么体现的
作者: 朱智琳    时间: 2015-6-11 08:07
悦鹏 发表于 2015-6-11 00:55
a:for循环语句和while循环语句可以等价转换,但还是有些小区别的。
           
         b:使用区别:

大神啊,这么详细!
作者: 小乎乎    时间: 2015-6-11 22:31
赞赞赞,每天给自己一个大大滴微笑
作者: q19871127    时间: 2015-6-11 23:30
我觉得吧 其实都是一样的   都是可以互相转换的   能使用for的地方 也一样能使用while 需要循环变量参与的一般都用for  反之一般用while
作者: 杜黎明    时间: 2015-6-11 23:42
。。。过来学习
作者: zs1973    时间: 2015-6-11 23:45
java中的循环主要有:for循环,while,do while三种。

首先说一下for循环,for循环 多用于在知道循环次数的情况下使用,比如上面的代码中用for循环来输出二维数组中的每一个元素,因为我们已经知道了每次循环的长度。
下面通过一个简单的打印九九乘法表的例子来看一下for循环的使用:

package itheiomatest;

public class test {

    public static void main(String[] args) {
        //首先我们先分析一下需求
        //1*1=1
        //1*2=2 2*2=4;......
        //因为乘法表有九行,所以我们循环的次数也就为九次,首先我们先定义一个int i;来控制外层循环的次数。
        for(int i=1;i<=9;i++)
        {
            //然后定义一个变量j来控制每一个行要乘几次,乘的次数应该是要小于等于每次循环的行数
            for(int j=1;j<=i;j++)
            {
                System.out.print(i+"x"+j+"="+i*j+" ");
            }
            System.out.println();

        }


    }

}

while,和do while的区别:

package itheiomatest;

public class test {

    public static void main(String[] args) {


        int i=1;
        while(i==0){
            System.out.println("执行了,我是while循环");
            i++;
        }

        int j=1;
        do{
            /**/
            System.out.println("执行了,我是do while循环");
        j++;
        }while(j==0);
    }

}
当执行完上面的代码以后,我们可以看出:while当条件语句成立时才执行大括号里面的代码,而do while 是先执行性大括号里面的代码,然后再进行判断条件语句。也就是说不管条件是不是成立do while这种循环至少会执行一次大括号里面的代码。
for循环主要是用于知道要循环的次数。


copy至我的博客

作者: 海洋你好    时间: 2015-6-12 09:21
有一个明显的区别就是在解锁的时候,如果判断后等待了,下次开始,用for不会在判断,用while
则会再判断
作者: YongBao_Summer    时间: 2015-6-12 09:40
其实没什么大的区别,可以互相转换的。
作者: Nemo    时间: 2015-6-12 09:57
因为使用while,循环次数变量要定义在循环外,这个变量其实只用于循环而已,也就是说循环完了就该释放了的,使用for可以定义在for语句中,for循环一结束,该变量释放
作者: 杜弦东.    时间: 2015-6-12 11:43
悦鹏 发表于 2015-6-11 00:55
a:for循环语句和while循环语句可以等价转换,但还是有些小区别的。
           
         b:使用区别:

  牛  赞一个   哈哈
作者: 杨凯瑞    时间: 2015-6-12 16:14
while  也有两种方式! 你说的是哪一种
作者: lyz942698    时间: 2015-6-12 18:14
for和while基本上是一样的,有些小区别,见如下代码(个人理解,如果发现误区,请大神指点!)
  1. public class Test003 {

  2.         public static void main(String[] args) {
  3.                 int i;
  4.                 //for循环
  5.                 for(i=0;i<10;i++){
  6.                         System.out.print("i="+i+",");
  7.                 }
  8.                 System.out.println("i="+i+".");
  9.                 //while循环之先输出i,再i++
  10.                 i=0;
  11.                 while(i<10){                       
  12.                         System.out.print("i="+i+",");
  13.                         i++;
  14.                 }
  15.                 System.out.println("i="+i+".");
  16.                 //while循环之先i++,再输出i。
  17.                 i=0;
  18.                 while(i<10){       
  19.                         i++;
  20.                         System.out.print("i="+i+",");
  21.                 }
  22.                 System.out.println("i="+i+".");
  23.         }
  24. }
复制代码

作者: a1224577182    时间: 2015-6-12 21:22
可以相互转化的,while一般用于不明确循环次数
作者: wenxueaaa555    时间: 2015-6-12 21:57
while循环是现在循环体外定义变量,再通过对变量的控制来实现循环次数,要计算;而for循环则可在循环体内部根据循环次数来定义变量,而且循环结束,变量消失
作者: cyd1058    时间: 2015-6-12 22:12
例如:for(x=1,x<=10,x++),里面的x只能自增10次,这就明确了循环次数
作者: cyd1058    时间: 2015-6-12 22:13
例如:for(x=1,x<=10,x++),里面的x只能自增10次,这就明确了循环次数
作者: 十五号的人生    时间: 2015-6-12 22:19
while用在循环次数不明确时,而for用在循环次数明确时
作者: 曹操001    时间: 2015-6-12 22:24
这个有点简单!
作者: 小乎乎    时间: 2015-6-12 23:55
q19871127 发表于 2015-6-11 23:30
我觉得吧 其实都是一样的   都是可以互相转换的   能使用for的地方 也一样能使用while 需要循环变量参与的 ...
  1. import java.util.Scanner;
  2. class  RamdomPlayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int num=(int)(Math.random()*100)+1;
  7.                 System.out.println("请输入一个1-100之间是数字:");
  8.                 while (true)
  9.                 {
  10.                         Scanner s=new Scanner(System.in);
  11.                         int guessNum=s.nextInt();
  12.                         if (guessNum>num)
  13.                         {
  14.                                 System.out.println("你输入的数值"+guessNum+"大了");
  15.                         }else if(guessNum<num)
  16.                         {
  17.                                 System.out.println("你输入的数值"+guessNum+"小了");
  18.                         }else
  19.                         {
  20.                                 System.out.println("恭喜你,猜对了");
  21.                                 break;
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码
e.........今天刚学了Math.Random()方法,随机数的时候貌似只能while的说。。是一个Random类改进猜数字小程序
作者: 小乎乎    时间: 2015-6-13 00:01
wenxueaaa555 发表于 2015-6-12 21:57
while循环是现在循环体外定义变量,再通过对变量的控制来实现循环次数,要计算;而for循环则可在循环体内部 ...
  1. import java.util.Scanner;
  2. class  RamdomPlayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int num=(int)(Math.random()*100)+1;
  7.                 System.out.println("请输入一个1-100之间是数字:");
  8.                 while (true)
  9.                 {
  10.                         Scanner s=new Scanner(System.in);
  11.                         int guessNum=s.nextInt();
  12.                         if (guessNum>num)
  13.                         {
  14.                                 System.out.println("你输入的数值"+guessNum+"大了");
  15.                         }else if(guessNum<num)
  16.                         {
  17.                                 System.out.println("你输入的数值"+guessNum+"小了");
  18.                         }else
  19.                         {
  20.                                 System.out.println("恭喜你,猜对了");
  21.                                 break;
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码
道理我都懂,就是想看个例子!!表示已经看到了,今天学的Random随机猜数字的小程序,这里用到的就是while,不能用for
作者: 小乎乎    时间: 2015-6-13 00:04
曹操001 发表于 2015-6-12 22:24
这个有点简单!

原谅我的无知。。表示已经get到一个只能用while的实例
作者: 小乎乎    时间: 2015-6-13 00:11
cyd1058 发表于 2015-6-12 22:13
例如:for(x=1,x
  1. import java.util.Scanner;
  2. class  RamdomPlayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int num=(int)(Math.random()*100)+1;
  7.                 System.out.println("请输入一个1-100之间是数字:");
  8.                 while (true)
  9.                 {
  10.                         Scanner s=new Scanner(System.in);
  11.                         int guessNum=s.nextInt();
  12.                         if (guessNum>num)
  13.                         {
  14.                                 System.out.println("你输入的数值"+guessNum+"大了");
  15.                         }else if(guessNum<num)
  16.                         {
  17.                                 System.out.println("你输入的数值"+guessNum+"小了");
  18.                         }else
  19.                         {
  20.                                 System.out.println("恭喜你,猜对了");
  21.                                 break;
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码
但是这样也可以用while阿
int x=0;
while(x<=10)
{
       循环体;
       x++;
}
那啥我就是想要个不明确次数只能用while的例子,今天学的内容关于Random随机数的例子就只能while的说
作者: 小乎乎    时间: 2015-6-13 00:19
zs1973 发表于 2015-6-11 23:45
java中的循环主要有:for循环,while,do while三种。

首先说一下for循环,for循环 多用于在知道循环次数 ...
  1. import java.util.Scanner;
  2. class  RamdomPlayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int num=(int)(Math.random()*100)+1;
  7.                 System.out.println("请输入一个1-100之间是数字:");
  8.                 while (true)
  9.                 {
  10.                         Scanner s=new Scanner(System.in);
  11.                         int guessNum=s.nextInt();
  12.                         if (guessNum>num)
  13.                         {
  14.                                 System.out.println("你输入的数值"+guessNum+"大了");
  15.                         }else if(guessNum<num)
  16.                         {
  17.                                 System.out.println("你输入的数值"+guessNum+"小了");
  18.                         }else
  19.                         {
  20.                                 System.out.println("恭喜你,猜对了");
  21.                                 break;
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码
虽然你回答很详细,那啥好像不是俺的菜拉,那啥我是想要个只能用while的时候的例子.........今儿学习了个随机数的猜数字小游戏的程序,貌似只能用while
作者: 小乎乎    时间: 2015-6-13 00:23
a1224577182 发表于 2015-6-12 21:22
可以相互转化的,while一般用于不明确循环次数

今儿学习了个随机数的猜数字小游戏的程序,貌似只能用while
作者: Baymax    时间: 2015-6-13 01:24
这两个是可以等效转化的
作者: q19871127    时间: 2015-6-13 21:24
小乎乎 发表于 2015-6-12 23:55
e.........今天刚学了Math.Random()方法,随机数的时候貌似只能while的说。。是一个Random类改进猜数字小 ...

for循环里面 什么都不填  也是一个无线循环  一样的
作者: 小乎乎    时间: 2015-6-13 23:37
给自己一个大大滴微笑
作者: 小乎乎    时间: 2015-6-14 00:23
猥琐,使劲踩
作者: yizihao1    时间: 2015-6-14 01:39
我让你原地转圈,我让你转5圈就让你别转了,就用for,我让你转,叫你转晕倒你就停了。因为我不知道你转多少圈才会也晕倒,就用while。
作者: 曹操001    时间: 2015-6-14 15:42
小乎乎 发表于 2015-6-13 00:04
原谅我的无知。。表示已经get到一个只能用while的实例

不抛弃,不放弃!李阳说:天才就是重复次数最多的人!加油吧,骚年!
作者: 朱智琳    时间: 2015-6-14 17:13
lyz942698 发表于 2015-6-12 18:14
for和while基本上是一样的,有些小区别,见如下代码(个人理解,如果发现误区,请大神指点!)
...

大神,你的意思是不是说:
for循环只能先执行循环语句再i++;
while循环 可以先i++,也可以先执行循环体;

个人觉得for循环也可以做到先i++,
  1. for(i=0;i<10; ){
  2.                 i++;
  3.                 System.out.print("i="+i+",");
  4.                 }
复制代码


我这种理解对不?

作者: 痞子刘忙    时间: 2015-6-14 18:28
小乎乎 发表于 2015-6-11 01:13
总结得好好阿!!!道理我都懂了,其实我就是想知道次数不明确的代码怎么体现的 ...

代码体现,看问题本身算法把。比如,你知道循环好多次,直接用for。不明确循环次数的情况,比如经过多少次达到某个数值,你不用算,直接写条件,交给计算机就好。不知说的是不是清楚
作者: SouthKai    时间: 2015-6-14 21:01
过来学习一下!
作者: 小乎乎    时间: 2015-6-15 21:56
赞一个,天天都有好心情
作者: 年华虚度    时间: 2015-6-15 23:23
学习了!!!




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