JavaSE---------基础知识点04(初入Java分支和循环语句的使用)

目录

Java的执行语句:

分类:

一、if分支 

二、Switch分支

 三、 if分支 VS switch分支

四、for循环分支

五、for循环嵌套


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分支 

1. 简单的if分支

        1.1语法结构:

if(表达式){

        ...代码块...

}

        1.2.理解:

if分支的表达式结果必须是boolean类型

                true  -  执行代码块

                false -  跳出if分支

        1.3实验:

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

         1.4案例:

        

import java.util.Scanner;

            //案例:如果榮十一的Java考试成绩大于98分,榮十一就能获得一辆法拉利作为奖励

public class Test01{
    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);
        
        System.out.println("请输入荣十一Java成绩:");
        double score = scan.nextDouble();

        if(score>98){
            System.out.println("榮十一就能获得一辆法拉利作为奖励");
        }
}

}

2.1复杂的if分支

        2.1.1案例

import java.util.Scanner;

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

public class Test01{
    public static void main(String[] args){
        
        //创建    
        Scanner scan = new Scanner(System.in);
        
        //1.输入体重和身高        
        System.out.println("请输入荣十一的体重(Kg):");
        double weigth = scan.nextDouble();
        System.out.println("请输入荣十一的身高(米):");
        double heigth = scan.nextDouble();

        //2.计算健康值
        double health =weigth/(heigth*heigth);

        //3.判断
        if(health>20 && health<25){
            System.out.println("小护士告诉榮十一:\"身体健康,请继续保持\"");
        }

        /**案例二:榮十一Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
				或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
*/
        Scanner input = new Scanner(System.in);
        System.out.println("请输入榮十一Java成绩:");
        int javaScore = input.nextInt();
        System.out.println("请输入榮十一音乐成绩:");
        int musicScore = input.nextInt();
        
        if((javaScore>98 && musicScore>80) || (javaScore==100 && musicScore>70)){
            System.out.println("奖励榮十一带薪休假一个月");
        }
}

}

3.if与else

        3.1语法结构

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

        3.2 理解

表达式的结果必须是boolean
                true - 执行代码块
                false- 执行else代码块

        3.3 实验

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

        3.4 案例

import java.util.Scanner;

            /**案例一: 榮十一的Java考试成绩大于98分,
			  就奖励他一个劳斯莱斯,否则惩罚榮十一编码*/

public class Test01{
    public static void main(String[] args){
        
        //创建    
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入Java成绩:");
		double score = scan.nextDouble();
			
	    if(score > 98){
			System.out.println("奖励榮十一一辆劳斯莱斯");
		}else{
			System.out.println("惩罚榮十一编写代码一个星期,并进行资料整理");
		}
       
}

}

4. if与else if 和else

        4.1 语法结构

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

        4.2 理解

            表达式的结果必须是boolean
            从上往下依次判断表达式,哪个表达式先为true,就执行对应的代码块
            所有的表达式都不为true,就执行else代码块
            注意:else{}根据需求可写可不写

        4.3 实验

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

        4.4 案例

import java.util.Scanner;

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

public class Test01{
    public static void main(String[] args){
        
        //创建    
        Scanner scan = new Scanner(System.in);
        
        //1.输入体重和身高        
        System.out.println("请输入荣十一的体重(Kg):");
        double weigth = scan.nextDouble();
        System.out.println("请输入荣十一的身高(米):");
        double heigth = scan.nextDouble();

        //2.计算健康值
        double health =weigth/(heigth*heigth);

        //3.判断
            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”
			否则打印“成绩异常”
*/
        System.out.print("请输入学生的成绩:");
		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("输入的成绩异常!");
		}
}

}

5.嵌套if分支

        5.1案例

import java.util.Scanner;
public class Test05 {

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

	//嵌套if分支	
	public static void main(String[] args) {
		
		Scanner scan=new Scanner(System.in);
		System.out.print("请输入你的百米比赛的成绩(秒):");
		double second=scan.nextDouble();
		
		if(second>0 && second<16) {
			System.out.println("恭喜你,有资格进入决赛");
			System.out.print("请输入你的性别:");
			String sex=scan.next();//输入字符串
			
			if(sex.equals("男")) {//判断sex和"男"这两个字符串内容是否相等
				System.out.println("恭喜你进入男子组决赛");
			}else if(sex.equals("女")) {/判断sex和"女"这两个字符串内容是否相等
				System.out.println("恭喜你进入女子组决赛");
			}else {
				System.out.println("性别异常!!");
			}
		}else if(second>=16) {
			System.out.println("很抱歉,你的百米成绩未能进入决赛,不过没关系,重在参与!");
		}else {
			System.out.println("成绩异常!!!");

		}
	}

}

6. if分支的总结

1.if可以判断区间
2.if可以判断复杂的条件
3.变量的驼峰命名法:除了第一个单词,其余的单词首字母大写

4.二选一的需求时考虑使用if...else...

5.多选一的需求时考虑使用if...else if...

6.语法的区别:
                if(){}:最简单的if
                if...else...:二选一
                if...else if...:多选一
                if可以无限层嵌套

7.应用场景:    
                可以判断单个值
                可以判断区间
                可以判断复杂的条件

二、Switch分支

1. 基本switch分支

        1.1语法结构:

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

        1.2 理解

表达式的结果可以是:byte、short、int、枚举(JDK1.5)、String(JDK1.7)
分别和值1、值2、值n比较,哪个相等,就执行对应的代码块
break:跳出switch分支语句
default代码块类似于else{},是其余其他情况的意思,根据需求可写可不写

        1.3 实验

switch(50){
                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.4 案例

import java.util.Scanner;
public class Test06 {

	public static void main(String[] args) {
		
		Scanner scan=new Scanner(System.in);
		System.out.print("请输入你计算机编程大赛获得的名次(如:第一名):");
		String st=scan.next();
		
		switch(st){
			case "第一名":
				System.out.println("奖励1个月马尔代夫旅游");
				break;
			case "第二名":
				System.out.println("奖励苹果Pro笔记本电脑一部");
				break;
			case "第三名":
				System.out.println("奖励移动硬盘一个");
				break;
			default:
				System.out.println("惩罚敲代码一天并整理所有学习资料,进行复习巩固");
				break;
		}
	}

}

2. 深入switch分支

        2.1 面试题

import java.util.Scanner;
public class Test07{
	/**
		知识点:深入switch分支
		
		面试题:
			case的值可以相同吗?不可以
			default可以省略吗?可以
			break可以省略吗?可以
			default的位置一定要在最后吗?不一定
			case后面值的类型可以不一样吗?可以不一样,但是必须兼容
			表达式值的类型可以是什么?byte、short、int、枚举(JDK1.5)、String(JDK1.7)
					
			
	*/
	public static void main(String[] args){
		
		switch(97){
			case 10:
				System.out.println("10");
			break;
			case 50:
				System.out.println("50");
			break;
			case 'a':
				System.out.println("97");
			break;
			default:
				System.out.println("...default代码块...");
			break;
			
		}
		System.out.println("switch分支以外的代码");
	}
}

        2.2 案例

import java.util.Scanner;
public class Test08{
	/**
		知识点:深入switch分支
		
		需求:输入年和月,输出当月的天数
		
		闰年:被4整除且不能被100整除 或者 被400整除的年份
	*/
	public static void main(String[] args){
		
		//输入年和月
		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 + "天");
		
		
	}
}

3. switch总结

switch表达式的类型为什么只有byte、short、int、枚举(JDK1.5)、String(JDK1.7)?
                    switch表达式的结果在底层只接受int
                    byte自动转型成int
                    short自动转型成int
                    枚举的对象系统会给他赋int值
                    String是获取的ASCII码

 三、 if分支 VS switch分支

1.语法结构的区别:
                if的表达式:boolean
                switch的表达式:byte、short、int、枚举(JDK1.5)、String(JDK1.7)
                
2. 应用场景的区别:
                if:判断单个值、区间、复杂的条件
                switch:判断单个值

四、for循环分支

1.含义:条件处理就会根据条件来执行

2.好处:减少了代码的冗余(减少重复性的代码)

3.语法结构:

for(表达式1;表达式2;表达式3){
                ...代码块...
            }

4.理解:

            表达式1:初始化变量
            表达式2:判断条件
            表达式3:更新变量

5.执行流程:

1.初始化变量
2.判断条件:判断条件的结果必须是boolean
                2.1 true - 执行代码块,并更新变量,重复第2个步骤
                2.2 false- 跳出整个循环语句

6.实验:

for(int i = 1;i<=5;i++){
                System.out.println("榮十一在现编程");
            }

7.for循环变形记: 

            循环中声明变量的作用域只能在循环内
            再循环中i++和++i没有区别
            int i = 1;
            for(;i<=5;){
                System.out.println("用良心做教育");
                //i++;
                ++i;
            }
            System.out.println(i);

8.案例:

理解案例1:输出1-9的数字
			for(int i = 1;i<=9;i++){
				System.out.println(i);
			}
			
		理解案例2:输出0-9的数字
			for(int i = 0;i<10;i++){
				System.out.println(i);
			}
		
		理解案例3:输出1~9数字中的奇数
			//解决方案1
			for(int i = 1;i<10;i+=2){
				System.out.println(i);
			}
			//解决方案2
			for(int i = 1;i<10;i++){
				if(i%2!=0){
					System.out.println(i);
				}
			}
			
		理解案例4:输出9~1的数字
			for(int i = 9;i>0;i--){
				System.out.println(i);
			}

9. 强化案例

案例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 score = scan.nextDouble();
				sum += score;//累加
			}
			System.out.println("平均分为:" + (sum/5));
			
		案例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);

10.总结:

理解案例:i可以从1开始也可以从0开始,更新变量可以递增也可以递减
        
        死循环:(应该避免的)
            for(;;){
                System.out.println("榮十一在现编程");
            }
            
        伪死循环:(应该避免的)
            for(int i = 0;i>=0;i++){
                System.out.println("榮十一在现编程");
            }

五、for循环嵌套

1. 语法结构:

        for(表达式1;表达式2;表达式3;){

                ...代码块...

                for(表达式1;表达式2;表达式3){

                        ....代码块...

                }

        }

2.案例

            打印图形
			****
			****
			****
			for(int i = 0;i<3;i++){
				for(int j = 0;j<4;j++){
					System.out.print("*");
				}
				System.out.println();
/**                            A
                              ABA
                             ABCBA
                            ABCDCBA
                           ABCDEDCBA
             
*/

        for (int i = 1; i <= 5; i++) {
            for (int j = 0; j < 5-i; j++) System.out.print(" ");
            for (int k = 0; k < i; k++) System.out.print((char)('A'+k));
            for (int l = i-2; l >= 0; l--) System.out.print((char)('A'+l));
            System.out.println();
        }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榮十一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值