黑马程序员——Java基础语法(二)---流程控制

  本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础。常见的流程控制主要有四类:判断结构、选择结构、循环结构、其他控制结构

  一、判断结构

    判断结构的标志是if语句,if语句主要有三种表现形式:

    1、if(条件表达式)

      {

        执行语句

      }   

      注意:

      1、如果if语句中只有一条语句,那么可以不写大括号。不过初学者一定要写括号,以免出错。

      2、如果if语句没写大括号,if就只能控制离它最近的单条语句。

   

    2、if(条件表达式)

      {

        执行语句;

      }

      else

      {

        执行语句;

      }

      三元运算符是if-else格式的简写,但是三元运算符是一个表达式,是要产生具体的结果的,所以在if-else结构有具体的结果的时候可以简写为三元运算符。

    3、if(条件表达式)

      {

        执行语句;

      }

      else if(条件表达式)

      {

        执行语句;

      }

      else

      {

        执行语句;

      } 

  我们可以写个程序加深对于if-else结构的理解:根据用于指定月份,打印该月份所属的季节。

 1 class OperatorDemo
 2 {
 3     public static void main(String[] args)
 4     {
 5          IfDemo(9);
 6      }
 7     static void IfDemo(int month)
 8     {
 9         //一年有四季,春3-5,夏6-8,秋9-11,冬12-2
10         if(month<1||month>12)
11             System.out.println("没有"+month+"月,这个月份!");
12         else if (month>=3&&month<=5)
13         {
14             System.out.println(+month+"月是春季!");
15         }
16         else if (month>=6&&month<=8)
17         {
18             System.out.println(+month+"月是夏季!");
19         }
20         else if (month>=9&&month<=11)
21         {
22             System.out.println(+month+"月是秋季!");
23         }
24         else
25         {
26             System.out.println(+month+"月是冬季!");
27         }
28     }
29 }

  输出的结果为:

  

   

  二、判断结构

  判断结构的标志是switch

    格式:

    switch(表达式)

    {

      case 取值1:

        执行语句;

        break;     

      case 取值1:

        执行语句;

        break;

       default :

        执行语句;

        break;

      }

    switch语句的特点:
      1、switch语句选择的类型只有四种:byte,short,int,char。

      2、case与default没有顺序。先执行第一个case,没有匹配的case执行default。

      3、结束switch语句的两种情况:①遇到break,②执行到switch语句结束。

      4、如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

      5、进入switch语句后,执行顺序是先执行case,然后从上到下,最后再执行default。即使default放在case上面,执行顺序也不变。

    也用switch演示一下刚刚的月份得到季节的题目吧:

 1 static void switchDemo(int month)
 2     {
 3         switch(month)
 4         {
 5             case 3:
 6             case 4:
 7             case 5:
 8                 System.out.println(+month+"月是春季!");
 9                 break;
10             case 6:
11             case 7:
12             case 8:
13                 System.out.println(+month+"月是夏季!");
14                 break;
15             case 9:
16             case 10:
17             case 11:
18                 System.out.println(+month+"月是秋季!");
19                 break;
20             case 12:
21             case 1:
22             case 2:
23                 System.out.println(+month+"月是冬季!");
24                 break;
25             default :
26                 System.out.println("没有"+month+"月,这个月份!");
27                 break;
28         }
29     }

  定义的一个静态函数来实现的,为了在主函数中输出方便,输出的结果为:

  

  对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对较高

三、循环结构

  循环结构的关键词有:while、do-while、for;

  1、while语句的结构:

    while(条件表达式)

    {

      执行语句;

    }

    一定要注意不要写while(true);这样的语句,后面的分号就是循环体,代表不执行任何语句,这个循环就成了死循环,后面的{执行语句;}就变成了局部代码块

  2、do-while语句的格式:

    do

    {

      执行语句;

    }while(条件表达式)

    dowhile语句的特点:无论条件是否满足,循环体至少执行一次。while如果条件不满足,循环体一次都不会执行。

  3、for语句的格式;

    for(初始化表达式;循环条件表达式;循环后操作表达式)

    {

      执行语句;

    }

    for里面的三个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

  接下来介绍一种比较复杂的for循环,就是for循环嵌套。

  简单来说就是在循环中还要执行循环操作。在生活中很常见,比如9*9乘法口诀,两个乘数都分别从1增加到9,就需要双重循环来操作。下面演示一下乘法口诀标的代码:

 1 static void doubleForDemo(int number)
 2     {
 3         for(int i=1;i<=number;i++)
 4         {
 5             //j<i作为循环判断条件可以控制每次循环要操作的数
 6             for(int j=1;j<=i;j++)
 7             {
 8                 System.out.print(j+"*"+i+"="+j*i+"\t");
 9             }
10             //每次循环一轮后打印回车换行
11             System.out.println();
12         }
13     }

  代码中的"\t"是一个转义字符,也就是制表符。还有其他的一些转义字符:\n:回车,\b:退格,\r:回车符。

  输出结果为:

  

四、其他控制语句

  break(跳出),continue(继续)。 

  break语句应用于跳出当前循环;

  continue语句是结束本次循环继续下次循环。

  注意:这两个语句离开循环的应用范围,存在是没有意义的。

  这个两个语句单独存在,下面都不可以有语句,因为执行不到,编译会出错!

  我们可以通过一个小练习来熟悉一下break和continue。

 1 //求10以内的前三个奇数。
 2     static void breakAndContinue()
 3     {
 4         int count=0;
 5         for(int i=0;i<10;i++)
 6         {            
 7             if(i%2==0)
 8                 continue;//如果是偶数则结束本次循环继续下次循环。
 9             if(count++>=3)//如果是奇数则判断是第几次,如果超过第三个奇数则终止循环
10                 break;
11             System.out.println(i);
12         }
13     }

结果如下:

  

流程控制的总结到这里就结束了,要想写好代码,流程控制也是必须要牢牢掌握的。

继续努力加油!为了明天更好的自己。

 

posted @ 2015-09-21 12:44    阅读(223)  评论(0编辑  收藏  举报