黑马程序员技术交流社区

标题: if 和while 的区别,求讨论 [打印本页]

作者: 沁雪冰菏    时间: 2014-4-18 10:41
标题: if 和while 的区别,求讨论
if和while在使用的时候详细的区别说说啊,还有使用的情况
作者: igi9009    时间: 2014-4-18 10:45
while用于循环语句,而if用于判断和分支语句。
由于你并没有指明是什么程序,只能泛泛而谈了。
if 语句中,常用格式为:
if(判断条件){执行语句}
上面的结构,只是进行一次判断。
if与else结合,就可形成一个分支结构的语句,形如
if(判断条件1){执行语句1}
else if (判断条件2){执行语句2}
else if (判断条件3){执行语句3}
else if (...) {...}
else{执行语句n}
有些程序则用的是case,实际上与上面的else if等价。
While一般有两种形式
形式1:do{执行语句} While(判断条件),执行效果是先运行执行语句,再进行while条件判断,如果符合条件,则返回继续执行do后的执行语句,由此形成循环。
形式2:While(判断条件)do{执行语句},先进行判断,而运行执行语句。执行语句运行完毕,自动返回继续判断while中的条件是否符合,符合的话,继续运行执行语句,不符合,则退出循环。

while与if语句的最大的相同点是都有至少一步的判断。
最大的不同点是:IF语句运行完毕后,接着运行下面的语句。而While中的执行语句运行完毕后,还要进行继续判断条件是否符合循环条件,根据判断的条件,返回执行语句或继续运行下面的程序。
作者: 程序爱好者    时间: 2014-4-18 11:26



If语句的结构


If语句有固定的格式:


if (判断语句) {

     执行语句;

}
在java的If语句中,判断语句执行的是true的执行下面大括号中的语句,然后在在执行大括号外面的语句,否则直接执行大括号外面的语句执行。
while是循环结构
提问者采纳




While(SUM<10),括号里的是循环条件,就是说,当SUN<10的时候才继续循环。
初始状态:sum=0,i=1
第一次:sum=0+1=1;输出i,此时i=1;i++就是i=i+1=2;
判断条件后,循环能继续。
第二次:sum=1+2=3;输出i,此时i=2;i++得到i=i+1=3;
判断条件后,循环能继续。
第三次:sum=3+3=6;输出i,此时i=3;i++得到i=i+1=4;
判断条件后,循环能继续。
第四次:sum=6+4=10;输出i,此时i=4;i++得到i=i+1=5;
此时sum=10了,循环结束。

作者: 宋大龙    时间: 2014-4-18 23:57
这是基础语法中的三个语法结构:if   while   switch
1判断结构:if语句  if语句包括三种格式
a: if(条件表达式)
        {
                执行语句;
        }

b: if(条件表达式)
        {
                执行语句;
        }
        else
        {
                执行语句;
        }
c:  if(条件表达式)
        {
                执行语句;
        }
        else if (条件表达式)
        {
                执行语句;
        }
        ……
        else
        {
                执行语句;
        }
他的每种格式都是单条语句,而且条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false,如果是true,则执行语句,如果是false则判断下面else中的条件表达式然后循环。
2: while 是循环结构  有两种格式
a:  while语句格式:
while(条件表达式)
{
        执行语句;
}
b:  do while语句格式:
do
{
        执行语句;
}while(条件表达式);
3:   if{;;}等价于while(true){}     
我感觉用于循环两者没有太大区别..


作者: 孙鑫    时间: 2014-4-19 00:06
本帖最后由 孙鑫 于 2014-4-19 00:12 编辑

当我们需要进行选择判断时用if语句。
if语句有三种形式:
第一种:
if(条件表达式){
执行语句;
}
第二种:
if(条件表达式1){
执行语句1;
}
else{
执行语句2;
}
第三种:
if(条件表达式1){
执行语句1;
}
else if(条件表达式2){
执行语句2;
}
......
else{
执行语句;
}

if else 结构简写格式: 变量 =(条件表达式)?表达式1:表达式2;//三元表达式
while语句格式:
while(条件表达式){
执行语句;
}
while语句要先判断条件,只有条件满足才执行循环体中的执行语句。

do while 语句格式:
do{
执行语句;
}while(条件表达式);
do while 特点是条件无论条件是否满足,循环体至少被执行一次。

作者: vtming    时间: 2014-4-19 00:17
我简单说下主要区别:
if是判断语句,小括号内表达式为true,执行大括号内语句。语句块结构如下,
if(boolean)
{                }
while语句是循环结构,小括号内表达式为true,执行大括号内语句,并且循环执行,直到小括号内表达式为false。语句块结构如下:
while(boolean)
{               }

作者: 织语不如书    时间: 2014-4-19 20:29
我个人感觉其实两个是互通的,if可以做到的while也可以做到,反之亦是如此;
比较喜欢用if,因为循环变量是定义在if代码块里的,if结束之后就不用了,不像while需要定义在外面
作者: 彭飞    时间: 2014-4-20 15:36
楼上的童鞋大神们都说了很多,
关于if和while,都是循环,在一定情况下还可以进行互换。

这是定义上,用途上的字面说法,
其实,真正用到的时候,用多了,你就知道什么时候用if好,什么时候用while。
比如,由多个逻辑判断的循环结构,

楼上举例说到了条件表达式用布尔boolean类型,
在if里面,true就执行,值执行一次,
在while,true就一只执行。

这种说法似乎不是很确切,在有限的学习中接触到的if条件式用到boolean似乎很少。
而while条件式用true则是无限循环,死循环,没有意义。

但是到这里,楼主应该有了一定的认识了。

再着,涉及到switch,当多个if···else的时候,则用switch了,
总之,
他们都是循环结构,各有优势,多练习,比对这种文字上的理解深刻。

比如,循环重复功能的结构。
作者: \(^o^)/    时间: 2014-4-20 17:04
while是一个循环语句,也就是说只要条件满足,就会执行一次循环体,执行完以后会再判断一次条件,如果满足条件,还会再执行一次,终而复始,除非你在循环中对条件进行了改变才会从
循环中跳出来。例如:
class  AB
{
public static void main(String[] args)
{
  int x=1;
  while(x<3)
  {
   System.out.print("x="+x);
   x++;  //每当循环一次x自增1,当x>=3时,while内的条件不满足,循环则跳出。
  }
}
}
结果输出为:x=1  x=2
while还有一种和do在一起的用法,while是先判断条件,只有条件满足才执行,do while先执行再判断条件,条件满足再继续执行,简单一句话,do while无论条件是否满足循环体至少执行一
次。
class AB
{
public static void main(String[] args)
{
  int x=1;
  do
  {
   System.out.println("x="+x);
   x++;
  }
  while(x<1);
}
}  
结果输出为:x=1
if为判断语句,只有当条件表达式条件满足时才会执行。
如:
class AB
{
public static void main(String[] args)
{
  int x=1;
  if(x>2)
  {
   System.out.println("yes");
   
  }
   System.out.println("no");
}
}  
当if中的条件满足时输出yes,如果不满足则输出no,换成if else则为
class AB
{
public static void main(String[] args)
{
  int x=1;
  if(x>2)
  {
   System.out.println("yes");
   
  }
  else
  {
   System.out.println("no");
  }
}
}  
if else 结构简写格式为 变量=(条件表达式)?表达式1:表达式2;也称为三元运算符,三元运算符的好处是可以简化if else代码,弊端:因为是一个运算符所以运算完必须要有一个结果。
还有一种是
if(判断条件1){执行语句1}
else if (判断条件2){执行语句2}
else if (判断条件3){执行语句3}
else if (...) {...}
else{执行语句n}
例如:根据用户定义的数值不同,打印对应的星期英文。
class AB
{
public static void main(String[] args)
{
  int x=2;
  if (x==1)
   System.out.println(x+"星期一");
  else if (x==2)
   System.out.println(x+"星期二");
  else if (x==3)
   System.out.println(x+"星期三");
  else if (x==4)
   System.out.println(x+"星期四");
  else if (x==5)
   System.out.println(x+"星期五");
  else if (x==6)
   System.out.println(x+"星期六");
  else if (x==7)
   System.out.println(x+"星期天");
  else
   System.out.println(x+"不存在");
}
}






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