JAVA中选择语句和循环

流程控制

概述

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清除每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

顺序结构

public static void main(String[] args) {
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
 }

判断语句--if(选择结构)

执行流程:
首先判断关系表达式看其结果是yrue还是false
如果是true就执行语句体
如果是false就不执行语句体
public static void main(String[] args) {
        System.out.println("开始");
        //定义两个变量
        int a = 10;
        int b = 20;
        //变量使用if判断
        if (a == b) {
            System.out.println("a等于b");
        }
        int c = 10;
        if(a==c){
            System.out.println("a等于c");
        }
        System.out.println("结束");
 }

判断语句--if...else

执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
public static void main(String[] args) {
       //判断给定的数据是奇数还是偶数
        //定义变量
        int a=1;
        if(a%2==0){
            System.out.println("a是偶数");
        }else
        {
            System.out.println("a是奇数");
        }
        System.out.println("结束"); 
}

判断语句if..else if..else

//案例1  判断数字范围
public static void main(String[] args) {
       // x和y的关系满足如下:
        // x>=3 y = 2x + 1;
        // ‐1<=x<3 y = 2x;
        // x<=‐1 y = 2x – 1;
        // 根据给定的x的值,计算出y的值并输出。
        // 定义变量
        int x = 5;
        int y;
        if (x >= 3) {
            y = 2 * x + 1;
        } else if (x >= -1 && x < 3) {
            y = 2 * x;
        } else {
            y = 2 * x + 1;
        }
        System.out.println("y的值是:" + y);
}


//案例2  指定考试成绩,判断学生等级
public static void main(String[] args) {
	int score=95;
        if(score<0 || score>100){
            System.out.println("你的成绩是错误的");
        }else if(score>=90 && score<=100){
            System.out.println("你的成绩属于优秀");
        }else if(score>=80 && score<90){
            System.out.println("你的成绩属于好");
        }else if(score>=70 && score<80){
            System.out.println("你的成绩属于良");
        }else if(score>=60 && score<70){
            System.out.println("你的成绩属于及格");
        }else{
            System.out.println("你的成绩属于不及格");
        }
}

if语句和三元运算符的互换

public static void main(String[] args) {
	int a = 10;
        int b = 20;
        //定义变量,保存a和b种的较大值
        int c;
        if (a > b) {
            c = a;
        } else {
            c = b;
        }
        //可以将上述功能改写为三元运算符的形式
        c = a > b ? a : b;
}

选择语句---switch

执行流程:
这里要注意一点是if语句种条件必须为boolean表达式 而switch则是任意表达式
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

//案例  根据给定的数字判断今天星期几
public static void main(String[] args) {
	//定义变量,判断是星期几
        int weekday=6;
        //switch语句实现
        switch(weekday){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期天");
                break;
            default:
                System.out.println("你输入的数字有误!");
                break;
        }
}

case的穿透性

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
//案例
public static void main(String[] args) { 
	int i = 5; 
	switch (i){ 
	case 0: 
		System.out.println("执行case0"); 
		break;
    case 5: 
    	System.out.println("执行case5"); 
    case 10: 
    	System.out.println("执行case10"); 
    default: 
    	System.out.println("执行default");
    } 
 }
 上述程序执行完以后,执行case5后,由于没有break语句,程序会一直往后走,不会在判断case,也不理会break,直接运行完整体switch语句。
 由此需要注意,case语句具有穿透性,必须要加上break语句(特殊情况除外)。

循环语句--for

for(初始表达式1;布尔表达式2;步进表达式4){
	循环体3;
}
执行流程:
1234>234>234>..2不满足为止
1负责完成循环变量的初始化
2负责判断是否满足循环条件,不满足则跳出循环
3为具体执行的语句
4循环后,循环条件所涉及变量的变化情况

//循环练习:使用循环,计算1-100之间的偶数和
public static void main(String[] args) { 
	//定义一个初始化变量,记录累加求和,初始值为0
        int sum = 0;
        //2.利用for循环获取1-100之间的数字
        for (int i = 1; i <= 100; i++) {
            //3.判断获取的数组是奇数还是偶数
            if (i % 2 == 0) {
                //4.如果是偶数就累加求和
                sum += i;
            }
        }
}

循环语句--while

格式:
初始化表达式1
while(布尔表达式2){
	循环体3
	步进表达式4
}
执行流程:
执行顺序:1234>234>234...2不满足为止
1负责完成循环变量初始化
2负责判断是否满足循环条件,不满足则跳出循环
3具体执行的语句
4循环后,循环变量的变化情况

//案例 实现累加求和
public static void main(String[] args) { 
	//使用while循环实现
        //定义一个变量,记录累加求和
        int sum = 0;
        //定义初始表达式
        int i = 1;
        //使用while循环让初始表达式的值变化
        while (i <= 100) {
            //累加求和
            sum += i;
            //步进表达式改变变量的值'
            i++;
        }
}

循环语句--do...while

初始表达式1
do{
	循环体3
	步进表达式4
}while(布尔表达式3);
执行流程:
执行顺序:134>234>234...2不满足为止
1负责完成循环变量的初始化
2负责判断是否满足循环条件,不满足则跳出循环
3具体执行的语句
4循环后,循环变量的变化情况

do...while循环的特点,无条件执行一次循环,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性。

循环语句的区别

for跟while的小区别:
1.控制条件语句所控制的那个变量,在for循环结束后,就不能在被访问到了,而while循环结束还可以继续使用,如果你还想继续使用,就用while,否则推荐使用for,原因是for循环结束,该变量就从内存中消失了,能提高内存的使用效率。
在已知循环次数的时候使用for,循环次数未知的时推荐使用while(布尔表达式为true,从内部直接break来以此结束循环)

break:终止switch或者循环
continue:结束本次循环,继续下一次的循环

嵌套循环

//案例  打印直角三角形
public static void main(String[] args) { 
	for (int i = 1; i <=5; i++) {
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
}
posted @ 2021-03-02 10:38  轻风格走一走  阅读(187)  评论(0编辑  收藏  举报