首页 > 代码库 > Day04 程序流程控制

Day04 程序流程控制

##程序流程控制
* 判断结构
* 选择结构
* 循环结构

###判断结构
####if语句 三种格式
```java
    /*一层判断*/
    if(条件表达式)        //如果if控制的语句只有一条,那么下面的大括号可以省略,即控制距离if最近的单条语句;else同理。
    {
        执行语句;
    }
```
```java
    /*两层判断*/
    /*
    三元运算符 变量 = (条件表达式)?表达式1:表达式2;   
    三元运算符优点是可以看做简化的if else语句,缺点是因为本身是运算符,运算结束后必须有一个结果。 
    */
    if(条件表达式)
    {
        执行语句;
    }
    else
    {
        执行语句;
    }
```
```java
    /*多层判断*/
    if(条件表达式)
    {
        执行语句;
    }
    else if (条件表达式)
    {
        执行语句;
    }
    ……
    else
    {
        执行语句;
    }
```
示例:
```java
//需求,根据客户定义的数值判定所属的季节。
//定义是3,4,5月属于春季,6,7,8月属于夏季,9,10,11月属于秋季,12,1,2月属于冬季。
class IfSeason
{
    public static void main(String[] args)
    {
        int month = 7;
        if(month>12 || month<1)
            System.out.println("该月份不存在");
        else if(month>=3 && month<=5)
            System.out.println(month+"月属于春季");
        else if(month>=6 && month<=8)
            System.out.println(month+"月属于夏季");
        else if(month>=9 && month<=11)
            System.out.println(month+"月属于秋季");
        else
            System.out.println(month+"月属于冬季");
    }
}
```
结果如下:
 
tips:注意main函数的格式规范,中间没有点,结尾没有分号,另外执行.class文件时注意类名和程序的一致性。

###选择结构
####switch语句格式
```java
switch(表达式)//表达式只接受四种类型的变量:byte,short,int,char。
{
/*case与default没有顺序,总是从第一个case开始执行,default不管在哪个位置都是所有case判定不通过后才执行。*/
/*switch语句执行到break或者结束大括号才算执行完毕。如果遇到符合条件的case或者default但是后面没有break,那么它会将此case或default后面的语句全部顺序执行并且不再判断case的值,直到遇到break或者大括号。*/
   case 取值1:
        执行语句;
        break;
    case 取值2:
        执行语句;
        break;
    ……
    default:
        执行语句;
        break;//最后的break可以省略。
}
```
示例
```java
class SwitchDemo
{
    public static void main(String[] args)
    {
        int x = 5;
        switch(x)
        {
        /*先依次执行case判定,没有符合条件的项,就直接执行default,执行完后既没有遇到break语句也没有遇到大括号,则将default后面的语句不判定case依次执行直到遇到break或者大括号。*/   
            default:
                System.out.println("wrong");
            case 1:
                System.out.println("1");
            case 2:
                System.out.println("2");
            case 3:
                System.out.println("3");
        }
    }
}
```
结果:
Tips:多个case可以对应同一个执行语句,例如:
```java
int x = 4;
swich(x)
{
    case 3:
    case 4:
    case 5:
        System.out.println(x+"属于春季");
        break;
    default:
        System.out.println(x+"不属于春季或者输入错误");
        break;
}
```
**if语句和switch语句的联系和区别:**
   if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;而 switch 只能对四种基本类型进行数值比较。(5.0版本增加了枚举类型,7.0增加了字符串。)
   如果判定的数值不多,并且符合四种类型,可以用switch,效率稍高。
   其他情况:对区间判断,对boolean类型判断,使用if,if的使用范围更广。 

###循环结构
代表语句:while,do while,for
####while语句格式
```java
while(条件表达式)//while语句条件表达式后面不能跟分号,虽然编译可以通过但是会陷入死循环。
{
    执行语句(循环体);
}//while的特点是先判定条件,满足才执行循环体。
```
tips:`ctrl+c`强制结束命令行执行。
####do while语句格式
```java
do
{
    执行语句;
}while(条件表达式);//do while的特点是先执行一次循环体,再判定条件,即无论条件是否满足,循环体都至少执行一次。
```
####for语句格式
```java
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
    (循环体)执行语句;
}//执行顺序是:初始化表达式->循环条件表达式->循环体-循环后的操作表达式->循环条件表达式……直到不满足循环条件。
```


待续



来自为知笔记(Wiz)


Day04 程序流程控制