选择分支和循环

上节课讲了运算符和类型转换,这节课主要来学学分支结构和循环

 

一个程序之所以有各种各样的功能,除了因为它可以做运算(包括算数运算和逻辑运算)以外,还在于它可以根据不同的条件进行判断来选择执行不同的代码,而要实现这样的功能,就必须用到分支结构和循环。

 

首先来说说程序流程控制结构:

  • 顺序结构

  • 程序从上到下逐行地执行,中间没有任何判断和跳转。

  • 分支结构

  • 根据条件,选择性地执行某段代码。

  • 有if…else和switch两种分支语句。

  • 循环结构

  • 根据循环条件,重复性的执行某段代码。

  • 有while、do…while、for三种循环语句。

  • 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

 

顺序结构

Java中定义变量时采用合法的前向引用。如:

    int num1 = 12;

    int num2 = num1 + 2;

错误形式:

    int num2 = num1 + 2;

int num1 = 12;

结论: java里的所有量(变量、常量)必须先声明后使用

 

分支语句1: if-else语句

if语句三种格式:

  1. if(true)

{

              //代码块;

}

解释:因为条件已经是true,所以会直接执行代码块

  1. if(条件表达式)

{

              //代码块1;

    }

else

{

              //代码块2;

}

解释: 如果条件表达式的值为true,则执行代码块1,否则执行代码块2

  1. if(条件表达式1)

{

              //代码块1;

    }

else if (条件表达式2)

{

              //代码块21;

    }

       ……

else

{

              //执行代码块2;

}

解释: 如果条件表达式1的值为true,则执行代码块1,否则如果条件表达式2的值

              true,则执行代码块21,否则执行代码块2

 

    注意:如果代码块内只有一条语句,则大括号可以省略,

所以格式3其实是格式2的变种

 

 

分支结构2:switch语句

 

switch(表达式)

{

       case 常量1:

              语句集1;

              break;

       case 常量2:

              语句集2;

              break;

       … …

       case 常量N:

              语句集N;

              break;

       default:

              语句集;

              break;

}

 

表达式与哪个case后的值相等就执行哪个case后的语句集,break语句表示跳出switch结构,如果都不匹配则执行default后的语句集

注意:

  1. switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String;(枚举和String以后讲)

  2. case子句中的值必须是常量,且所有case子句中的值应是不同的;

  3. default不是必须的

 

提示: 大家可以自己去试试如果不加break会是什么后果

 

demo:

给三个数排序

public static void main(String[] args) {
    int a = 3, b = 2, c = 1;
    int d = 0;
    if (a>b)
    {
        d = a;
        a = b;
        b = d;
    }
    if (a > c)
    {
        d = a;
        a = c;
        c = d;
    }
    if (b > c)
    {
        d = b;
        b = c;
        c = d;
    }
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
}

 

运行结果:

1

2

3

 

 

循环:

循环有三种: while,for,do-while

 

while 循环

while( 条件表达式)

{

       循环体;

}

 

其中条件表达式的值必须是boolean类型

 

如果条件表达式的值为true,则循环执行循环体,直到条件不满足

如果循环体里只有一条语句,大括号可以省略

 

demo

计算 1+2+3+…+99+100

 

public static void main(String[] args) {
    int i = 1;
    int sum = 0;
    while(i <= 100)
        sum += i++;
    System.out.println(sum);
}

 

运行结果:

5050

 

for循环

for(初始化语句;条件表达式;变更语句)

{

       循环体

}

 

for循环最开始会执行初始化语句,然后根据条件表达式来判断是否执行循环体

每次执行完循环体后会去执行一次变更语句,然后再去根据条件表达式判断是否继续循环

 

demo

计算 1+2+3+…+99+100

public static void main(String[] args) {
    int sum = 0;
    for(int i =0; i <= 100; i++)
        sum += i;
    System.out.println(sum);
}

 

运行结果

5050

 

do-while循环

do{

       循环体

}while(条件表达式);

和while类似,只不过会先执行一次循环体之后再去做判断是否继续执行

注意do-while语句结尾是有分号的

 

demo

计算 1+2+3+…+99+100

public static void main(String[] args) {
    int i = 1;
    int sum = 0;

do{

    sum += i++;

}while(i <= 100);
       
    System.out.println(sum);
}

 

continue语句:

       只能存在于循环体中,作用: 提前结束(或者说跳过)本次循环

 

break 语句

       可存在于循环体中, 作用: 跳出循环

 

最后,if-else 和三种循环是可以互相任意嵌套的

demo:

while和if嵌套版 1+2+3+…+99+100

 

public static void main(String[] args) {
    int i = 1;
    int sum = 0;
    while(true)
    {
        sum += i++;
        if (i > 100)
            break;
    }
    System.out.println(sum);
}

 

运行结果

5050

 

没有更多推荐了,返回首页