史上最全Java的执行语句的讲解(if,switch,for,while,do-while)

目录

        Java的执行语句

if

简单的if分支

复杂的if分支

if...else...

多重if分支

嵌套if分支

if总结:

switch

        switch的深入

for循环

                for循环变形记:

                for循环嵌套

while循环

do-while循环

        for vs while vs do-while

知识点:特殊的流程控制语句

        1.break

        2.continue

        3.return

        4.lable


Java的执行语句

分类

        1.顺序语句 ​ 方法中的代码从上往下执行 ​

        2.分支语句 ​ 依据某个条件判断,执行不同的功能

                ​ 2.1 if分支 ​

                 2.2 switch分支 ​

        3.循环语句 ​ 如果条件成立,就重复性的执行某个功能 ​

                 3.1 for循环

                ​ 3.2 while循环

                ​ 3.3 do-while循环 ​

        4.特殊的流程控制语句 ​

                4.1 break

               4.2 continue         

               4.3 return ​

                4.4 lable                                                                                                                           

if

简单的if分支

        语法结构:
 

        if(表达式){ 
        ...代码块...
                  }

理解: 表达式的结果必须是boolean类型

           true - 执行代码块

           false- 跳出整个分支语句

做实验:

if(false){
			System.out.println("...代码块...");
		}
			System.out.println("if分支以外的代码");

  案例:如果小张的Java考试成绩大于98分,小张就能获得一辆跑车作为奖励   

		Scanner scan = new Scanner(System.in);
        System.out.println("请输入小张的Java考试成绩:");
        double score = scan.nextDouble();
        if(score > 98){
            System.out.println("奖励小张跑车一辆");
        }

  小结:if(){}做判断

 

复杂的if分支

案例一: 人类的健康值在20-25的数值内为健康 (健康值算法为:体重(Kg) / 身高(米)的平方)

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入体重(Kg):");
        double weigth = scan.nextDouble();
        System.out.println("请输入身高(M):");
        double height = scan.nextDouble();

        double health = weigth/(height*height);

        if(health>20 && health<25){
            System.out.println("医生说:\"健康,请保持现有状态\"");
        }

     案例二:小张Java成绩大于98分,而且音乐成绩大于80分,老师奖励他; 或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他        ​             

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入Java成绩:");
        double javaScore = scan.nextDouble();
        System.out.println("请输入音乐成绩:");
        double musicScore = scan.nextDouble();

        if((javaScore>98 && musicScore>80) || (javaScore==100 && musicScore>70)){
            System.out.println("奖励小张劳斯莱赛车一辆");
        }

小结:if分支可以判断复杂条件

if...else...

        语法结构:

				if(表达式){
					...代码块...
				}else{
					...else代码块...
				}

理解: 表达式的结果必须是boolean

                 true - 执行代码块

                 false- 执行else代码块

做实验:

        if(false){
            System.out.println("...代码块...");
        }else{
            System.out.println("...else代码块...");
        }
        System.out.println("if分支以外的代码...");

案例:如果小张Java考试成绩大于98分,就奖励他一个劳斯莱斯, 否则,老师就罚他进行编码

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入小张的成绩:");
        double score = scan.nextDouble();

        if(score > 98){
            System.out.println("奖励小张劳斯莱斯赛车一辆");
        }else{
            System.out.println("小张通宵补课");
        }

小结:if...else...二选一的情况下使用

多重if分支

        语法结构:

		if(表达式1){
			...代码块1...
	    		}else if(表达式2){
		    		...代码块2...
				}else if(表达式n){
					...代码块n...
				}else{
					...else代码块...
				}

理解: ​ 表达式的结果必须是boolean ​ 从上往下判断,哪个表达式先为true,就执行对应的代码块 ​ 如果都不为true,就执行else代码块

注意:else{}根据需求可写可不写

案例一:人类的健康值在 15-20的数值内为偏瘦 20-25的数值内为健康 25-30的数值内为偏胖 (健康值算法为:体重(Kg) / 身高(米)的平方)

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入体重(Kg):");
        double weigth = scan.nextDouble();
        System.out.println("请输入身高(M):");
        double height = scan.nextDouble();
        double health = weigth/(height*height);
        if(health>15 && health<=20){
            System.out.println("医生说:\"偏瘦,多喝啤酒,多吃宵夜,多熬夜\"");
        }else if(health>20 && health<=25){
            System.out.println("医生说:\"健康,请保持现有状态\"");
        }else if(health>25 && health<=30){
            System.out.println("医生说:\"偏胖,多运动,嘿嘿嘿~~~\"");
        }else{
            System.out.println("医生说:\"健康值异常,请到医院进行详细检查\"");
        }

案例二:通过键盘录入学生成绩 如果在90-100之间,则打印“A”, 否则如果在80-90之间,则打印“B”, 否则如果在70-80之间,则打印“C” 否则如果在60-70之间,则打印“D” 否则如果在0-60之间,则打印“E” 否则打印“成绩异常”

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入成绩:");
		double score = scan.nextDouble();
		if(score >= 90 && score <= 100){
            System.out.println("A");
        }else if(score >= 80 && score<90){
            System.out.println("B");
        }else if(score >= 70 && score<80){
            System.out.println("C");
        }else if(score >= 60 && score<70){
            System.out.println("D");
        }else if(score >=  0 && score<60){
            System.out.println("E");
        }else{
            System.out.println("成绩异常");
        }

小结:多重if分支在多选一的情况下使用

嵌套if分支

案例:学校举行运动会,百米赛跑跑入16秒内的学生有资格进决赛, 根据性别分别进入男子组和女子组。

      	Scanner scan = new Scanner(System.in);
		System.out.println("请输入成绩:");
        double score = scan.nextDouble();
        if(score > 0 && score < 16){
            System.out.println("请输入性别:");
            String sex = scan.next();
            if(sex.equals("男")){//判断两个字符串内容是否相同
                System.out.println("恭喜进入到男子组决赛~~~");
            }else if(sex.equals("女")){//判断两个字符串内容是否相同
                System.out.println("恭喜进入到女子组决赛~~~");
            }else{
                System.out.println("性别异常~~~");
            }
		}else if(score >= 16){
			System.out.println("重在参与~~~");
		}else{
			System.out.println("成绩异常~~~");
		}

小结:if是可以嵌套的

if总结:

        1.if可以判断复杂条件 ​

        2.if可以在二选一的情况下使用 -- if...else... ​

        3.if可以在多选一的情况下使用 -- 多重if分支 ​

        4.if可以嵌套

switch

语法结构:

		switch(表达式){
			case 值1:
					...代码块1...
			break;
			case 值2:
					...代码块2...
			break;
			case 值n:
					...代码块n...
			break;
			default:
					...default代码块...
			break;
				    }

理解: 表达式的结果可以为byte、short、int、char、字符串、枚举 。分别给值1、值2、值n做比较, 哪个相等就执行对应的代码块 如果都不相等,就执行default代码块 break:跳出整个分支语句

注意:default代码块根据需求可写可不写 经验:switch有点像多重if分支

做实验:

			switch(1000){
				case 10:
					System.out.println("10");
				break;
				case 50:
					System.out.println("50");
				break;
				case 100:
					System.out.println("100");
				break;
				default:
					System.out.println("default代码块");
				break;
			}
			
			System.out.println("switch分支以外的代码");

案例:小张参加计算机编程大赛 如果获得第一名,将参加1个月马尔代夫旅游 如果获得第二名,将奖励苹果Pro笔记本电脑一部 如果获得第三名,将奖励移动硬盘一个 否则,小张通宵补课

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入小张的比赛成绩:");
		String str = scan.next();
        switch(str){
                case "第一名":
                    System.out.println("参加1个月马尔代夫旅游");
                break;
                case "第二名":
                    System.out.println("奖励苹果Pro笔记本电脑一部");
                break;
                case "第三名":
                    System.out.println("奖励移动硬盘一个");
                break;
                default:
                    System.out.println("通宵补课");
                break;
            }

switch的深入

面试题:
			case的值可以相同吗?
				不允许 -- 语法错误
			default可以省略吗?
				可以省略
			break可以省略吗?
				允许
			default的位置一定要在最后吗?
				不一定,一般是放在最后(为了代码可读性)
			表达式值的类型可以是什么?
				byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)	
			switch的底层判断逻辑是什么?/switch的表达式为什么是byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)?/为什么switch的表示式没有long、float、double、boolean?
				switch底层判断的标准是int类型
					byte -- 向上转型成 int
					short - 向上转型成 int
					char  - 获取字符的ASCII int
					String- hash值 int
					枚举  - 每个对象系统会分配int值
switch(10){
				case 10:
					System.out.println("10");
				break;
				case 50:
					System.out.println("50");
				break;
				case 80:
					System.out.println("80");
				break;
				case 100:
					System.out.println("100");
				break;
				default:
					System.out.println("default代码块");
				break;
			}

需求:输入年和月,输出当月的天数?

分析:1、3、5、7、8、10、12 -- 31天

           4、6、9、11 -- 30天

           2 -- 闰年29天 平年 28天

闰年的判断标准:年份被4整除且不能被100整除 或者 年份被400整除

		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年:");
		int year = scan.nextInt();
		System.out.println("请输入月:");
		int month = scan.nextInt();
		int day = 0;
		switch(month){
			case 1:case 3:case 5:case 7:case 8:case 10:case 12:
				day = 31;
			break;
			case 4:case 6:case 9:case 11:
				day = 30;
			break;
			case 2:
				if(year%4==0 && year%100!=0 || year%400==0){//闰年
					day = 29;
				}else{//平年
					day = 28;
				}
			break;
		}
		System.out.println(year + "年" + month + "月的天数为:" + day + "天");

知识点:if vs switch

表达式的区别: if:boolean

                         switch:byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)

应用场景: if:复杂条件或区间

                   switch:单个值

for循环

循环好处:减少代码的冗余

语法结构:

			for(初始化变量;判断条件;更新变量){
				...代码块/循环体...
			}

执行步骤: 1.初始化变量

                   2.判断条件(判断条件的结果必须是boolean的值)

                         2.1 true -- 执行代码块,更新变量,重复第2个步骤

                         2.2 false -- 跳出整个循环语句

需求1:输出5遍"好好学习"

		for(int i = 0;i<5;i++){
				System.out.println("好好学习");
			}

需求2:打印1~10的数字

		for(int i = 1;i<=10;i++){
				System.out.println(i);
			}

需求3:打印1~10内的奇数数字

		for(int i = 1;i<=10;i+=2){
				System.out.println(i);
			}

需求4:打印10~1的数字

		for(int i = 10;i>=1;i--){
				System.out.println(i);
			}

需求5:打印10~1内的偶数数字

		for(int i = 10;i>=1;i-=2){
				System.out.println(i);
			}

小结: 1.初始化变量不一定从0开始

            2.更新变量不一定每次都是++

for循环变形记:

			int i = 1;
			for(;i<=5;){
				System.out.println("好好学习");
				//i++;
				++i;
			}	
			System.out.println(i);

小结: 1.for循环内声明的变量只能在循环中使用

            2.更新变量:i++和++i是一样的

案例1:循环录入5次int类型的数字,输出总和

        Scanner scan = new Scanner(System.in);
        int sum = 0;
        for(int i = 1;i<=5;i++){
            System.out.println("请输入第" + i + "个数字:");
            int num = scan.nextInt();
            sum += num;
        }
        System.out.println("总和为:" + sum);

案例2:循环录入麻生希同学的5门课成绩,计算平均分

		Scanner scan = new Scanner(System.in);
		double sum = 0;
		for(int i = 1;i<=5;i++){
			System.out.println("请输入第" + i + "门成绩:");
			double num = scan.nextDouble();
			sum += num;
		}
		double avg = sum/5;
		System.out.println("平均分为:" + avg);

案例3:循环录入5次int类型的数字,输出最大值

		Scanner scan = new Scanner(System.in);
		//假设第一个数字为最大值
		System.out.println("请输入第1个数字:");
		int max = scan.nextInt();	
		for(int i = 2;i<=5;i++){
			System.out.println("请输入第" + i + "个数字:");
			int num = scan.nextInt();	
			if(max < num){
				max = num;
			}
		}
		System.out.println("最大值为:" + max);

总结:循环次数确定时,使用for循环

for循环嵌套

做实验:

		for(int i = 1;i<=3;i++){
				for(int j = 1;j<=5;j++){
					System.out.println(i + " -- " + j);
				}
			}
需求1:打印一下图形
			****
			****
			****
			for(int i = 0;i<3;i++){//控制行数
				for(int j = 0;j<4;j++){//控制列数
					System.out.print("*");
				}
				System.out.println();//换行
			}
需求2:打印一下图形
			*		i=0
			**		i=1
			***		i=2
			****	i=3
			*****	i=4
			for(int i = 0;i<5;i++){
				for(int j = 0;j<=i;j++){
					System.out.print("*");
				}
				System.out.println();
			}
需求3:打印一下图形
		***** i=0
		****  i=1
		***	  i=2
		**	  i=3
		*	  i=4
		for(int i = 0;i<5;i++){
			for(int j = 0;j<5-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
需求4:打印一下图形
		*****
		 ****
		  ***
		   **
		    *
		for(int i = 0;i<5;i++){
			for(int k = 0;k<i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j<5-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
需求5:打印一下图形	
		   *
		  ***
		 *****
		*******
		for(int i = 0;i<4;i++){
			for(int k = 0;k<3-i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j<i*2+1;j++){
				System.out.print("*");
			}
			System.out.println();
		}
需求6:打印一下图形
		   *
		  * *
		 *   *
		*******
		for(int i = 0;i<4;i++){
			for(int k = 0;k<3-i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j<i*2+1;j++){
				//第一行、最后一行、每行的第一列、最后一列
				if(i==0 || i==3 || j==0 || j==i*2){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
需求7:打印一下图形
		*******
		 *****
		  ***
		   *
		for(int i = 0;i<4;i++){
			for(int k = 0;k<i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j<7-i*2;j++){
				System.out.print("*");
			}
			System.out.println();
		}
需求8:打印一下图形
		*******
		 *   *
		  * *
		   *
		for(int i = 0;i<4;i++){
			for(int k = 0;k<i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j<7-i*2;j++){
				//第一行、最后一行、每行的第一列、最后一列
				if(i==0 || i==3 || j==0 || j==7-i*2-1){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
需求9:九九乘法表
		for(int i = 1;i<=9;i++){
			for(int j = 1;j<=i;j++){
				System.out.print(j + "X" + i + "=" + (i*j) + "\t");
			}
			System.out.println();
		}
需求10:九九乘法表
		for(int i = 1;i<=9;i++){
			for(int k = 1;k<i;k++){
				System.out.print("\t");
			}
			for(int j = i;j<=9;j++){
				System.out.print(i + "X" + j + "=" + (i*j) + "\t");
			}
			System.out.println();
		}

while循环

语法结构:

			while(表达式){
				...代码块/循环体...
			}

理解: 表达式的结果必须是boolean的值

            true - 执行代码块

            false- 跳出整个循环语句

案例:我有个梦想,每月存3000,每年递增2000元,多少个月后存满20万

int allMoney = 0;//总金额
		int money = 3000;//当月应存金额
		int month = 0;//月的计数变量
		
		while(allMoney < 200000){
			allMoney += money;
			month++;
			if(month % 12 == 0){
				money += 2000;
			}
		}
		System.out.println(month + "个月后存满20万");
		System.out.println(money);

do-while循环

语法结构:

			do{
				...代码块...
			}while(表达式);

理解: 先执行一遍代码块 再判断表达式,表达式结果必须是boolean类型

                true - 执行代码块

                false- 跳出整个循环语句

案例:小明参加学校组织的歌咏比赛,大赛在即,老师建议:先彩排一次, 如果很令人满意,以后就不用彩排了,否则每天都排,直到现场表现满意为止!

		Scanner scan = new Scanner(System.in);
		String str;
		do{
			System.out.println("小明:\"啦啦啦啦...\"");
			System.out.println("小明:\"可以了吗?\"");
			str = scan.next();
		}while(str.equals("不可以"));

for vs while vs do-while

表达式的区别:

                          for(初始化变量;判断条件;更新变量){}

                          while(判断条件){}

                          do{}while(判断条件);

共同点:判断条件的结果必须是boolean类型,true-循环,false-跳出循环

执行顺序的区别:

                               for:先判断,再执行

                              while:先判断,再执行

                             do-while:先执行一遍,再判断

应用场景的区别:        

                             循环次数确定时:for

                             循环次数不确定时,先判断再执行:while

                             循环次数不确定时,先执行一遍再判断:do-while

知识点:特殊的流程控制语句

1.break

作用:作用于循环中,表示结束当前循环

做实验:

while(true){
            System.out.println("111");
            System.out.println("222");
            if(true){
                break;
            }
            System.out.println("333");
            System.out.println("444");
        }

案例:循环录入小明同学5门课的成绩并计算平均分, 如果某分数录入为负,停止录入并提示。

			Scanner scan = new Scanner(System.in);
            boolean flag = true;//true-正常录入 false-非正常录入
            double sum = 0;
            for(int i = 1;i<=5;i++){
                System.out.println("请录入第" + i + "门成绩:");
                double score = scan.nextDouble();
                if(score < 0){
                    flag = false;
                    break;
                }
                sum += score;
            }
            if(flag){
                double avg = sum/5;
                System.out.println("平均分为:" + avg);
            }else{
                System.out.println("分数为负数,停止录入");
            }

2.continue

作用:作用于循环中,表示跳过循环体剩余的部分,进入到下一次循环 做实验:

while(true){
            System.out.println("111");
            System.out.println("222");
            if(true){
                continue;
            }
            System.out.println("333");
            System.out.println("444");
        }

案例:循环录入Java课5名学生的成绩,统计分数大于等于80分的学生比例。

解决方案1:

            Scanner scan = new Scanner(System.in);
            int num = 0;//记录大于等于80分学生的人数
            for(int i = 1;i<=5;i++){
                System.out.println("请录入第" + i + "名学生的成绩:");
                double score = scan.nextDouble();
                if(score >= 80){
                    num++;
                }
            }
            double proportion = num/5.0*100;
            System.out.println("大于等于80分的学生比例为:" + proportion + "%");

解决方案2:

        Scanner scan = new Scanner(System.in);
        int num = 0;//记录大于等于80分学生的人数
        for(int i = 1;i<=5;i++){
            System.out.println("请录入第" + i + "名学生的成绩:");
            double score = scan.nextDouble();
            if(score < 80){
                continue;
            }
            num++;
        }
        double proportion = num/5.0*100;
        System.out.println("大于等于80分的学生比例为:" + proportion + "%");

3.return

作用:作用于方法中,表示结束当前方法

做实验:

        System.out.println("111");
        System.out.println("222");
        if(true){
            return;
        }
        System.out.println("333");
        System.out.println("444");

4.lable

作用:给循环取名字/做标记

面试题:判断下列代码会不会报错?
       不会报错
		
        http://www.baidu.com
        for(int i = 0;i<5;i++){
         	System.out.println("用良心做教育");
        }

需求:嵌套for循环,外层循环5次,内层循环3次,

           当外层循环到第2次时在内层循环中结束掉外层循环

        a:for(int i = 1;i<=5;i++){
            for(int j = 1;j<=3;j++){
                System.out.println(i + " -- " + j);
                if(i == 2){
                    break a;
                }
            }
        }

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您详细讲解 Java 中的 if、for、switch、while 和 do while 语句。 1. if 语句 if 语句用于根据条件执行不同的代码块。语法如下: ``` if (条件) { // 如果条件为真,执行此处的代码块 } ``` 如果条件为真,则会执行代码块中的代码;如果条件为假,则会跳过代码块中的代码。 if 语句还可以与 else 语句结合使用,用于在条件为假时执行另一段代码块。语法如下: ``` if (条件) { // 如果条件为真,执行此处的代码块 } else { // 如果条件为假,执行此处的代码块 } ``` 2. for 语句 for 语句用于重复执行代码块。语法如下: ``` for (初始化语句; 条件; 循环迭代语句) { // 迭代执行此处的代码块 } ``` for 语句执行顺序如下: - 执行初始化语句; - 检查条件是否为真; - 如果条件为真,则执行代码块中的代码; - 执行循环迭代语句; - 回到第二步,继续检查条件是否为真。 for 语句还可以与 break 和 continue 语句配合使用,用于提前结束循环或跳过某次循环。其中,break 语句用于完全结束循环,而 continue 语句用于跳过本次循环。具体用法可以根据实际情况进行调整。 3. switch 语句 switch 语句用于根据不同的情况执行不同的代码块。语法如下: ``` switch (表达式) { case 值1: // 如果表达式的值等于值1,则执行此处的代码块 break; case 值2: // 如果表达式的值等于值2,则执行此处的代码块 break; // 其他 case 语句 default: // 如果表达式的值不等于任何一个 case 中的值,则执行此处的代码块 break; } ``` switch 语句会根据表达式的值来匹配不同的 case 语句,如果匹配成功,则会执行对应的代码块。如果没有匹配成功,则会执行 default 语句中的代码块。在每个 case 语句的代码块中,可以使用 break 语句来完全结束 switch 语句。 4. while 语句 while 语句用于重复执行某个代码块,直到条件不再成立。语法如下: ``` while (条件) { // 只要条件为真,就会重复执行此处的代码块 } ``` while 语句会在每次循环开始时检查条件是否为真,如果为真,则执行代码块中的代码,然后再次检查条件是否为真,直到条件不再成立。如果条件一开始就为假,则不会执行代码块中的代码。 5. do while 语句 do while 语句与 while 语句类似,也是用于重复执行某个代码块,直到条件不再成立。不同的是,do while 语句会先执行一次代码块,然后再检查条件是否为真。语法如下: ``` do { // 至少会执行一次此处的代码块 } while (条件); ``` do while 语句保证了代码块至少会被执行一次,然后在每次循环结束时检查条件是否为真,如果为真,则继续执行代码块中的代码,直到条件不再成立。如果条件一开始就为假,则只会执行一次代码块中的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值