流程控制语句

流程控制语句分类:

  1. 顺序结构:普通的代码,由上而下依次执行
  2. 分支结构(if, switch)
  3. 循环结构(for, while, do…while)

if语句:

格式1:

if (关系表达式) {
    语句体;	
}

执行流程:

  1. 首先计算关系表达式的值
  2. 如果关系表达式的值为true就执行语句体
  3. 如果关系表达式的值为false就不执行语句体
  4. 继续执行后面的语句内容
        public static void main (String[]args){
            System.out.println("开始");

            // 如果年龄大于18岁, 就可以上网吧
            int age = 17;

            if (age >= 18) {
                // int a = 10;
                System.out.println("可以上网吧");
            }

            System.out.println("结束");
        }

if语句格式2

if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

执行流程:

  1. 首先计算关系表达式的值
  2. 如果关系表达式的值为true就执行语句体1
  3. 如果关系表达式的值为false就执行语句体2
  4. 继续执行后面的语句内容
//任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。
        public static void main (String[]args){
            // 程序判断一个数, 是奇数还是偶数
            int num = 9;

            if (num % 2 == 0) {
                System.out.println("偶数");
            } else {
                System.out.println("奇数");
            }
        }

if语句格式3

if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
}else {
    语句体n+1;
}
  1. 首先计算关系表达式1的值
  2. 如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
  3. 如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
  4. 如果没有任何关系表达式为true,就执行语句体n+1。
        // 定义一个在0~100之间的变量a, 判断分数在什么范围,90 ~ 100优秀,80 ~ 89良好,70 ~ 79中等,60 ~ 69及格,0 ~ 59请努力加油!
   public static void test() {
        System.out.println("请输入您的分数");
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();

        if (score >= 90 && score <= 100) {
            System.out.println("优秀");
        } else if (score >= 80 && score <= 89) {
            System.out.println("良好");
        } else if (score >= 70 && score <= 79) {
            System.out.println("中等");
        } else if (score >= 60 && score <= 69) {
            System.out.println("及格");
        } else if (score >= 0 && score <= 59) {
            System.out.println("请努力加油");
        } else {
            System.out.println("成绩有误!");
        }
    }

小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

    public static void test02() {
        // 1. 使用Scanner录入考试成绩
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的成绩:");
        int score = sc.nextInt();
        // 2. 判断成绩是否在合法范围内 0~100
        if (score >= 0 && score <= 100) {
            // 合法成绩
            // 3. 在合法的语句块中判断成绩范围符合哪一个奖励
            if (score >= 95 && score <= 100) {
                System.out.println("自行车一辆");
            } else if (score >= 90 && score <= 94) {
                System.out.println("游乐场一次");
            } else if (score >= 80 && score <= 89) {
                System.out.println("变形金刚一个");
            } else {
                System.out.println("挨顿揍, 这座城市又多了一个伤心的人~");
            }
        } else {
            // 非法的话, 给出错误提示
            System.out.println("您的成绩输入有误!");
        }
    }

switch语句:

格式:

 switch (表达式) {
  	case 1:
  		语句体1;
  		break;
  	case 2:
  		语句体2;
  		break;
  	...
  	default:
  		语句体n+1;
  		break;
  }

执行流程:

  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

switch案例-减肥计划

    public static void test() {
        // 1. 键盘录入星期数据,使用变量接收
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数");
        int week = sc.nextInt();
        // 2. 多情况判断,采用switch语句实现
        switch (week) {
            // 3. 在不同的case中,输出对应的减肥计划
            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;
        }
    }

switch语句case穿透:

如果switch语句中,case省略了break语句, 就会开始case穿透,会一直往下执行,当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行,直到看见break,或者将整体switch语句执行完毕,才会结束。

   public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数:");
        int week = sc.nextInt();

        switch (week) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("穿透了吗");
                break;
            case 6:
            case 7:
                System.out.println("约师妹");
                break;
            default:
                System.out.println("您的输入有误");
                break;
        }
    }

for循环:

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

格式

for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}

格式解释:

  • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情\
  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

执行流程

  1. 执行初始化语句
  2. 执行条件判断语句,看其结果是true还是false=
    如果是false,循环结束
    如果是true,继续执行
  3. 执行循环体语句
  4. 执行条件控制语句
  5. 回到2继续

求1-100之间的偶数和,并把求和结果在控制台输出

    public static void main(String[] args) {
        //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
        int sum = 0;

        for (int i = 1; i <= 100; i++) {
            //对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
            if (i % 2 == 0) {
                sum += i;// sum += i;相当于sum=sum+i;                
            }
        }
        //当循环执行完毕时,将最终数据打印出来
        System.out.println("1-100之间的偶数和是:" + sum);
    }

for循环案例-水仙花数

水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数
例如:153 3*3*3 + 5*5*5 + 1*1*1 = 153

    public static void main(String[] args) {
        // 1. 定义变量count,用于保存“打印过”的数量,初始值为0
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 10 / 10 % 10;

            if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) {
                //  2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让count变量+1,记录打印过的数量
                System.out.print(i + " ");
                count++;
                // 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行
                if (count % 2 == 0) {
                    System.out.println();
                }
            }
        }
    }

while循环:

格式:

 初始化语句;
  while (条件判断语句) {
  	循环体语句;
      条件控制语句;
  }

执行流程:

  1. 执行初始化语句
  2. 执行条件判断语句,看其结果是true还是false
    如果是false,循环结束
    如果是true,继续执行
  3. 执行循环体语句
  4. 执行条件控制语句
  5. 回到2继续
    public static void main(String[] args) {
        //定义一个计数器,初始值为0
        int count = 0;
        //定义纸张厚度
        double paper = 0.1;
        //定义珠穆朗玛峰的高度
        int zf = 8844430;
        //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
        //折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
        while (paper <= zf) {
            //循环的执行过程中每次纸张折叠,纸张的厚度要加倍
            paper *= 2;
            //在循环中执行累加,对应折叠了多少次
            count++;
        }
        //打印计数器的值
        System.out.println("需要折叠:" + count + "次");
    }

dowhile循环格式:

  初始化语句;
  do {
  	循环体语句;
  	条件控制语句;
  }while(条件判断语句);

执行流程:

  1. 执行初始化语句
  2. 执行循环体语句
  3. 执行条件控制语句
  4. 执行条件判断语句,看其结果是true还是false
    如果是false,循环结束
    如果是true,继续执行
  5. 回到2继续
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
        //for循环实现
        for (int i = 1; i <= 5; i++) {
            System.out.println("HelloWorld");
        }
        System.out.println("--------");
        //do...while循环实现
        int j = 1;
        do {
            System.out.println("HelloWorld");
            j++;
        } while (j <= 5);
    }

三种循环的区别:

  • 三种循环的区别:for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
    for循环和while的区别:条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
    条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

死循环:

格式:

  for死循环格式 :
  for(;;){
  
  }
  
  while死循环格式 :
  
  while(true){
  
  }
  
  do..while死循环格式 :
  
  do{
  
  }while(true);
    public static void main(String[] args) {
        for (; ; ) {
            System.out.println("药不能停");
        }

    /*
		while(true){
			System.out.println("药不能停");
		}
	*/

    /*  do {
            System.out.println("药不能停");
        } while (true);
    */

        // System.out.println("你看我报错不");	// 报错:不会执行的语句
    }

跳转控制语句:

  • 跳转控制语句(break):跳出循环,结束循环,break语句只能在循环和switch中进行使用
    跳转控制语句(continue):跳过本次循环,继续下次循环,基于条件控制, 在循环内部使用.
    注意: continue只能在循环中进行使用!
//   需求: 模拟电梯上行的过程 1-24层, 4层不停.
    public static void main(String[] args) {
        for (int i = 1; i <= 24; i++) {
            if (i == 4) {
                continue;
            }
            System.out.println(i + "层到了~");
        }
    }
    // 需求: 模拟20岁工作到80岁, 60岁退休.
    public static void main(String[] args) {
        for (int i = 20; i <= 80; i++) {
            if (i == 60) {
                break;        // 结束整个循环
            }
            System.out.println(i + "岁正在上班");
        }
    }

减肥计划改进
如果是多重循环,那break只能跳出当前循环,要想全部跳出,那就给最外面循环加标号,如果要退出直接break到标号就行了

    public static void main(String[] args) {

        lo:  //起个标号名
        while (true) {
            System.out.println("请输入您要查看的星期数:");
            System.out.println("(如无需继续查看,请输入0退出程序)");

            // 1. 键盘录入星期数据,使用变量接收
            Scanner sc = new Scanner(System.in);
            int week = sc.nextInt();
            // 2. 多情况判断,采用switch语句实现
            switch (week) {
                // 3. 在不同的case中,输出对应的减肥计划
                case 0:
                    System.out.println("感谢您的使用");
                    break lo;
                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;
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

itzhuzhu.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值