流程控制语句

本文介绍了Java中的流程控制语句,包括顺序结构、分支结构(if单分支、双分支、多分支)和循环结构(for、while、do-while)。通过示例代码展示了如何使用这些结构解决问题,如心跳检查、绩效评分、星期活动、月份天数判断以及计算水仙花数等。强调了不同分支和循环结构的适用场景及特点。
摘要由CSDN通过智能技术生成

   Java中提供一些流程控制语句,来控制程序的执行流程,如有顺序结构(默认流程);分支结构;循环结构。重点了解分支结构和顺序结构。

 分支结构

    • if分支

if分支有三种格式

①格式一

if (条件表达式) {
    语句体;
}

②格式二

if   (条件表达式)  {
      语句体1;
}  else  {
      语句体2;
}

③格式三;

if  (条件表达式1) {
     语句体1;
}  else  if(条件表达式2) {
      语句体2;
}  else  if (条件表达式3) {
      语句体3;
}
...
else {
语句体n+1;
}
  //目标:学会使用if分支结构解决问题,理解其流程
public class ifDemo1 {
    public static void main(String[] args) {
      //格式1
      //需求:心跳(60~100)之间是正常,否则系统提示进一步检查
      int beat =89;
      if(beat<60||beat>100){
        System.out.println("你的心跳数据是"+beat+",您可能需要进一步检查。");
      }
      System.out.println("您很正常,检查结束。");//输出 您很正常,检查结束

        //格式2
        //需求:发红包
        double money =5678;
        if(money>=1000) {
            System.out.println("余额充足,可以发红包。");
        } else{
            System.out.println("自供自足吧!");  //输出:余额充足,可以发红包。
        }



        //格式3
        //需求:绩效成绩 S 90~100  A 80~90  B 70~80  C70以下
        int  score=90;
        if(score>=90&&score<=100){
            System.out.println("你的绩效是:S");
        }else if (score>=80&&score<90){
            System.out.println("你的绩效是:A");
        }else if (score>=70&&score<80){
            System.out.println("你的绩效是:B");
        }else{
            System.out.println("你的绩效是: C");  //输出:你的绩效是:S
        }
  }
  }
    • switch分支

  switch分支也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰

  switch分支的格式

switch(表达式){
      case 值1:
              执行代码...;
               break;
       case 值n+1:
               执行代码...;
               break;
        default:
                执行代码...;
}

执行流程:

①先执行表达式的值,拿着这个值去与case后的值进行匹配。

②匹配的哪个case的值为true就执行哪个case,遇到break就跳出switch分支。

③如果case后的值都不匹配则执行default代码

public class switchDemo2 {
    public static void main(String[] args) {
        String weekday ="周日";
        switch(weekday){
            case "周一":
                System.out.println("看黑马视频");
                break;
            case "周二"   :
                System.out.println("写算法题");
                 break;
            case "周三"   :
                System.out.println("写博客");
                break;
            case"周四"  :
                System.out.println("重复周一");
                break;
            case "周五" :
                System.out.println("重复周二");
                break;
            case "周六" :
                System.out.println("开会");
                break;
            case "周日" :
                System.out.println("出去浪");
                break;
            default:
                System.out.println("数据有误");   //输出: 出去浪
        }
    }
}

switch分支注意事项:

①表达式类型只能是byte;  short;  int; char  jdk5开始使用枚举,jdk7开始使用String,不支持double   float  long

②case给出的值不允许重复,切只能是字面量,不能是变量

③不要忘记写break,否则会出现穿透现象

switch的穿透性

如果代码执行到没有写break的case块,执行后将之间进入下一个case块(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性

格式:

switch(表达式){
       case 值1 :
            执行代码1;
        case2:
            执行代码2;
        case3:
             执行代码3;
...
         case 值n:
              执行代码n;
              break;
         default:
               执行代码n+1;
}

案例:月份天数查看器

1,3,5,7,8,10,12月份是31天
2月份闰年是29天,非闰年是28天
4, 6, 9,11月份是30天
public class switchDemo3 {
    public static void main(String[] args) {

        int month = 3;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month+"月有31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month+"月有30天");
                break;

            case 2:
                System.out.println(month+"月闰年有29天,非闰年有28天");
                break;      //输出: 三月有31天

        }
    }
}

循环结构

for循环

控制一段代码,反复执行很多次

for(初始化语句;循环条件;迭代语句) {
           循环体语句(反复执行的代码);
}

for(int i=0; i <3; i++) {
 System.out.println("Hello World");
 //输出:Hello World   Hello World   Hello World
}

案例一:求和

public class forDemo1 {
    public static void main(String[] args) {
        //需求:计算1~5的和
        //定义一个整形变量用于雷佳数据求和
        int sum=0;
        for(int i=1;i<=5;i++){
            sum+=i;
        }
        System.out.println("1~5的和是"+sum);  //输出:1~5的和是15
    }
}

案例二:求奇数和

需求:求1~10之间的奇数和,并把求和结果在控制台输出

public class forDemo2 {
    public static void main(String[] args) {
  //方法一:
        int sum =0;
        for(int i=1; i<=10;i++) {
            if(i%2==1){

               sum+=i;
            }
        }
        System.out.println("1~10的奇数和为"+sum);   //输出:1~10的奇数和为25
    }
}
   //方法二:
public class forDemo2 {
    public static void main(String[] args) {
        int sum =0;
        for(int i=1; i<=10;i+=2) {
               sum+=i;

        }
        System.out.println("1~10的奇数和为"+sum);   //输出:1~10的奇数和为25
    }
}

案例三:水花仙数

需求:在控制台输出所有的"水仙花数",水仙花数必须满足如下2个要求:

1.水仙花数是一个三位数

2.水仙花数的个位、十位、百位的数字立方和等于原数

3.求出水仙花的个数

public class forDemo {
    public static void main(String[] args) {
        int count=0;  //再循环外定义一个变量用于记录水仙花数的个数
        for (int i=100;i<=999;i++){
            int a=i%10;  //个位
            int b=i/10%10;  //十位
            int c=i/100;   //百位
            if((a*a*a+b*b*b+c*c*c) ==i) {
                System.out.println(i+"\t");   //输出:153 370 371 407
                count++;
            }
        }
        System.out.println("水仙花的个数为"+count);   //水仙花数的个数为4
    }
}

 while循环   

格式:                                      

while (循环条件) {
          循环体语句(被重复执行的代码);
          迭代语句;
}
public class doDemo1 {
    public static void main(String[] args) {
        //目标:学会使用while循环,并理解其执行流程
        int i=0;
        
        while (i<3){
            System.out.println("Hello,World");
            i++;
        }

    }
}

什么时候用 for 循环,什么时候用 while 循环?

.功能上是完全一样的, for 能解决的 while 也能解决,反之亦然。

.使用规范是:知道循环几次:使用 for ;不知道循环几次建议使用: while

案例:珠穆朗玛峰

世界最高山峰是珠穆朗玛峰(8848.86米=8848860米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。

思路:

这种不清楚要循环多少次的情况可以选择用 while 实现

public class whileDemo1 {
    public static void main(String[] args) {
        //定义山峰的高度,智障的厚度
        double peakHeight =8848860;
        double peakThickness =0.1;

        //定义纸张折叠的次数
        int count=0;

        //定义一个while循环来控制纸张进行折叠
        while(peakThickness<peakHeight){
            //让纸张厚一倍
            peakThickness*=2;
            count++;
        }
        System.out.println("折叠的次数"+count);
        System.out.println("纸张的最终厚度"+peakThickness);
        //折叠的次数27
        //纸张的最终厚度1.34217728E7
    }
}

do-while循环

先执行再判断循环条件

格式:

初始化语句
do  {
     循环体语句;
     迭代语句;
}  while(循环条件);     

do-while循环的特点:一定会先执行一次循环体

public class doDemo1 {
    public static void main(String[] args) {
        //目标:学会使用do-while循环,并理解其执行流程
        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 循环中,控制循环的变量在循环后还可以继续使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ananan__2023

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

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

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

打赏作者

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

抵扣说明:

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

余额充值