【Java语言基础】5.1 Java程序流程控制

Java程序流程控制

Java提供了一些流程控制语句,来控制程序的执行流程。

1. 顺序结构

  • 顺序结构是程序的默认结构,如果你没有写其他的结构,按照代码的先后顺序,依次执行。程序中大多数的代码都是这样执行的。

2. 分支结构

2.1 if

  • 根据判定的结果(真或假)决定执行某个分支的代码。
  • if分支有三种格式。
    • 格式1
    /**
     * 目标:学会使用if分支结构解决问题,理解其流程。
     * 格式1:
     * if(条件表达式){
     *     语句体;
     * }
     */
    public class IfDemo1 {
        public static void main(String[] args) {
            // 判读学生的成绩是否达到60分,未达到则判定学生成绩不合格
            int x = 59;
            if(x < 60){
                // 你的成绩是59分,不合格
                System.out.println("你的成绩是" + x + "分," + "不合格");
            }
        }
    }
    
    • 格式2
    /**
     * 目标:学会使用if分支结构解决问题,理解其流程。
     * 格式2:
     * if(条件表达式){
     *      语句体1;
     * } else{
     *      语句体2;
     * }
     */
    public class IfDemo2 {
        public static void main(String[] args) {
            // 付款时判断钱包余额是否充足
            double money = 200;
            if(money >= 500){
                System.out.println("付款成功!");
            }else {
                System.out.println("对不起,你的余额不足。");
            }
        }
    }
    
    • 格式3
    /**
     * 目标:学会使用if分支结构解决问题,理解其流程。
     * 格式3:
     * if(条件表达式1){
     *     语句体1;
     * } else if(条件表达式2){
     *     语句体2;
     * } else if(条件表达式3){
     *     语句体3;
     * }
     * ...
     * else{
     *     语句体n+1;
     * }
     */
    public class IfDemo3 {
        public static void main(String[] args) {
            // 成绩评级:0-60 C   60-80 B   80-90 A   90-100 A+
            int score = 99;
            if (score >= 0 && score < 60){
                System.out.println("你的成绩等级为:C");
            }else if (score >= 60 && score < 80){
                System.out.println("你的成绩等级为:B");
            }else if (score >= 80 && score < 90){
                System.out.println("你的成绩等级为:A");
            }else if (score >= 90 && score <= 100){
            	System.out.println("你的成绩等级为:A+");
        	}else {
            	System.out.println("你录入的成绩有误!!!");
        	}
        }
    }
    

2.2 switch

  • 也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。
  • switch案例
    • 周一:埋头苦干,解决bug
    • 周二:请求大牛程序员帮忙
    • 周三:今晚啤酒、龙虾、小烧烤
    • 周四:主动帮助新来的程序媛解决bug
    • 周五:今晚吃鸡
    • 周六:与王阿姨介绍的小美相亲
    • 周末:郁郁寡欢、明天上班
/**
 * 目标:学会使用switch分支结构解决问题,理解其流程。
 * 格式:
 * switch(表达式){
 *     case 值1:
 *          执行代码...;
 *          break;
 *     case 值2:
 *          执行代码...;
 *          break;
 *     ...
 *     case 值n-1:
 *          执行代码...;
 *          break;
 *     default:
 *          执行代码n;
 * }
 */
public class SwitchDemo1 {
    public static void main(String[] args) {
        String day = "周三";
        switch (day){
            case "周一":
                System.out.println("埋头苦干,解决bug");
                break;
            case "周二":
                System.out.println("请求大牛程序员帮忙");
                break;
            case "周三":
                System.out.println("今晚啤酒、龙虾、小烧烤");
                break;
            case "周四":
                System.out.println("主动帮助新来的程序媛解决bug");
                break;
            case "周五":
                System.out.println("今晚吃鸡");
                break;
            case "周六":
                System.out.println("与王阿姨介绍的小美相亲");
                break;
            case "周末":
                System.out.println("郁郁寡欢、明天上班\n");
                break;
            default:
                System.out.println("输入数据有误");
        }
    }
}
  • 执行流程:
    • 先执行表达式的值,拿着这个值去与case后的值进行匹配。
    • 匹配那个case的值为true就执行那个case,遇到break就跳出switch分支。
    • 如果case后的值都不匹配则执行default代码。
  • switch分支注意事项:
    • 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long
    • case给出的值不允许重复,只能是字面量,不能是变量。
    • 不要忘记写break,否则会出现穿透现象。
  • switch的穿透性如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),知道遇到break才跳出分支,这就是switch的穿透性。

3. 循环结构

3.1 for循环

  • 控制一段代码反复执行很多次。
/**
 * 目标:学会使用for循环,并理解它的执行流程
 * 格式:
 * for(初始化语句; 循环条件; 迭代语句){
 *     循环体语句(重复执行的代码);
 * }
 */
public class ForDemo1 {
    public static void main(String[] args) {
        // 输出3次Hello World
        for (int i = 0; i < 3; i++) {
            System.out.println("Hello World");
        }
    }
}

3.2 while循环

/**
 * 目标:学会使用while循环,并理解它的执行流程
 * 格式:
 * 初始化语句;
 * while(循环条件){
 *     循环体语句(被重复执行的代码);
 *     迭代语句;
 * }
 */
public class WhileDemo1 {
    public static void main(String[] args) {
        int i = 0;
        while (i < 3){
            System.out.println("Hello World");
            i++;
        }
    }
}
  • 什么时候用for循环,什么时候用while循环?
    • 功能上是完全一样的,for能解决的while也能解决,反之亦然。
    • 使用规范是:知道循环几次,使用for;不知道循环几次建议使用while。

3.3 do-while循环

  • 先执行再判断循环条件。
  • do-while循环的特点:一定会先执行一次循环体。
/**
 * 目标:学习使用do-while循环,并理解它的执行流程。
 * 格式:
 * 初始化语句;
 * do{
 *     循环体语句;
 *     迭代语句;
 * }while(循环条件);
 */
public class DoWhileDemo1 {
    public static void main(String[] args) {
        int i = 0;
        do {
            System.out.println("Hello World");
            i++;
        }while (i < 3);
    }
}

三种循环的区别

  • for循环和while循环(先判断后执行)
  • do…while(第一次先执行后判断)

for和while的区别

  • for循环和while循环的执行流程是一摸一样的。
  • 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
  • for循环中,控制循环的变量只在循环中可以使用。while循环中,控制循环的变量在循环后还可以继续使用。

4. 跳转关键字:break、continue

  • break:跳出并结束当前所在循环的执行。
  • continue:用于跳出当前循环的当次执行,进入下一次循环。

注意事项:

  • break:只能用于结束所在循环,或者结束所在switch分支的执行。
  • continue:只能在循环中进行使用。
/**
 * 目标:理解break 和 continue的作用
 */
public class BreakAndContinueDemo1 {
    public static void main(String[] args) {
        // 输出三次Hello World
        for (int i = 0; i < 5; i++) {
            System.out.println("Hello World " + i);
            if (i == 2){
                break;
            }
        }

        System.out.println("===========华丽的分割线===========");

        for (int i = 0; i < 5; i++) {
            if (i == 2){
                continue;
            }
            System.out.println("Hello World " + i);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐三木Mu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值