03- 条件分支和循环控制

这篇博客详细介绍了条件分支结构,包括if、else、switch的使用,强调了switch的注意事项和与if的区别。同时,文章涵盖了各种循环结构如while、do-while和for,讲解了它们的语法、执行流程和应用场景。此外,还讨论了多重嵌套和流程控制关键字如continue、break、return的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择结构

if else

if 单条件

if( score > 90){
    给予奖励
}

双条件分支

if(){ 
	给于奖励
}else{
    给予惩罚
}

多条件

多重分支
if(score > 80){
    成绩优秀
}else if(score > 60){
    成绩合格
}...{
    
}else{
    不及格
}
  • 问题 多重if选择结构中各个条件的顺序可以任意排列吗?
嵌套
int score = 70;
if(score > 80){
	System.out.println("成绩优秀");
}else{
    // 成绩一定不是大于80的
    if(score > 60){
    	System.out.println("及格");
    }else{
    	System.out.println("不及格");
    }
}

案例 掷骰子

// 使用随机数 获得 一个 1-6 之间的一个数(掷骰子)
用户猜 大小
public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 掷骰子 获取随机数
        // 1 - 6 之间的随机数
        int no1 = (int)(Math.random()*6 + 1);
        int no2 = (int)(Math.random()*6 + 1);
        int no3 = (int)(Math.random()*6 + 1);

        System.out.println("掷骰子完毕, 开始猜大小!!");
        // 接收用户传入的汉字
        String s = input.next();

        // 开 开
        // 筛子的 点数
        System.out.println(no1+"\t"+no2+"\t"+no3);

        // 根据筛子 查看 到底是大是小
        String s1 ;
        if( (no1 + no2 + no3) > 9){
            s1 = "大";
        }else{
            s1 = "小";
        }

        // 用户 猜的 和实际的点数 比较 如果一致 猜对了, 如果不一致猜错了
        if(s.equals(s1)){
            System.out.println("恭喜, 猜对了");
        }else{
            System.out.println("猜错了");
        }

    }

switch

格式

switch(表达式){
    case 值1 : 
    	执行语句;
    	break;
    case 值2 :
    	执行语句;
    	break;
    default : 
    	如果以上条件都没有满足的;
}

注意点

  • 从匹配到的case 开始 到 break 结束 , 不能漏写 break;
  • default 的顺序 不能乱. 必须写在最后
  • switch 中 可以匹配 byte char String

switch 和 if else 的区别

  • 都是条件分支结构

不同点

  • if 可以用于任何情况
  • switch 只能用于等值判断, 不适用于范围判断

案例

使用 switch 模拟 10086 客服电话

循环结构

循环三要素

  • 循环条件 - 执行循环的条件
  • 循环体 - 循环所执行的主体代码
  • 迭代条件 - 循环不能无限期的执行

需要在控制台打印 10次 你好世界

sout("hello world");
// 写十次...
sout("hello world");

while

语法

while(循环条件){
    // 循环体
    // 迭代条件
}

案例

// 在控制台打印 10次 你好世界

 // 做俯卧撑 十个
 int count = 1 ;
 // 1- 循环条件
 while(count <= 10){   // 满足条件则执行循环 不满足退出循环
     // 2- 循环体
     System.out.println("正在做第" + count + "个俯卧撑");
     // 3- 迭代条件
     count++;
 }

执行流程

  1. 对循环条件进行判断, 为真 执行循环
  2. 执行完毕循环体之后, 进行迭代, 再次进行循环条件判断
  3. 一直到不满足条件为止 , 退出循环

案例

// 打印 1 - 100
 int y = 1;
 while(y <= 100){
     System.out.println(y);
     y++;
 }
// 计算 1 + 2 + 3 + ... + 100 和
int y = 0;
// 定义和  sum
int sum = 0;
while(y < 100){
    y++;
   // sum = sum + y;
   sum += y;
}
// 计算 1- 100 之间所有 偶数的和
// 第一种写法
int y = 0;
// 定义 和  sum
int sum = 0;
while(y < 50){
    y++;  // 1 2 3 4 5
   sum += y*2;
}
System.out.println(sum);

// 计算 1- 100 之间所有 偶数的和
// 第二种写法
int y = 0;
int sum = 0;
while(y < 100){
    y++;
   if( y % 2 == 0){
        sum += y;
    }
}
 // 计算100 以内 所有能够被3 整除的数 的和
 int y = 0;
 int sum = 0;
 while(y < 100){
     y++;
    if( y % 3 == 0){
         sum += y;
     }
 }

do while

语法

do{
	//循环体
	// 迭代条件
}while(循环条件);

案例

int count = 1;
do{
    System.out.println(count);
    count++;
}while( count <= 100);

对比 while 和 do while的区别

  • while 先判断后执行
  • do while 先执行 后判断
  • do while 能够保证 循环体至少执行一次

案例 猜数字小游戏

// 系统随机产生一个1- 100之间数字, 用户循环输入猜大小, 如果用户猜错了数字, 系统提示 比随机的数字大还是小

Scanner input = new Scanner(System.in);
        // 系统随机生成 一个0 - 100 之间的随机数   包含0 不包含100
  int no = (int)(Math.random()*100);
  int n;
  // 计数器
  int count = 0;
do{
    System.out.println("请输入您猜测的数字:");
     n = input.nextInt();
    if(n > no){
        System.out.println("大了");
    }else if(n < no){
        System.out.println("小了");
    }else{
        System.out.println("恭喜,猜对了!!");
    }
    // 退出条件 猜对了数字 退出
    count++;
}while(no != n);
  System.out.println("您一共猜了"+count+"次 就猜出了正确结果!");

for

语法

for(初始化变量; 循环条件 ; 迭代条件){
   // 循环体
}

案例

for(int n = 0 ; n < 100 ; n++){
    System.out.println(n);
}

while 和 for 对比

  • while 循环条件 可以是 不确定循环次数的场景
  • for 只能适用于 已知循环次数的场景

刚才 猜数字案例 玩游戏之前 不知道到底猜几次才能猜对, 所以使用while 不能使用for

循环打印100 次, 明确知道就打印100次 , 推荐使用for循环

案例

// 循环输入 一名学生的5门课的成绩, 并求出平均分打印
Scanner input = new Scanner(System.in);
System.out.println("请输入学生姓名");
String name = input.next();

// 求平均分 先求和
int sum = 0;
for(int i = 0 ; i < 5 ; i++){
   System.out.println("请输入5门课中第"+(i+1)+"门的成绩:");
   int score = input.nextInt();
   // 累加
   sum = sum + score ;
 }
 System.out.println("平均分"+(sum/5.0));

多重嵌套

条件分支 可以嵌套 条件分支

//把之前的案例 加深 , 输入多名学生的成绩
 Scanner input = new Scanner(System.in);
 int no ;
 do{
     System.out.println("请输入学生姓名");
     String name = input.next();

     // 求平均分 先求和
     int sum = 0;
     for(int i = 0 ; i < 5 ; i++){
         System.out.println("请输入5门课中第"+(i+1)+"门的成绩:");
         int score = input.nextInt();
         // 累加
         sum = sum + score ;
     }
     System.out.println("平均分"+(sum/5.0));

     // 退出条件 输入1 继续输入 输入0 退出循环
     System.out.println("继续输入请按 1 退出按 0");
     no = input.nextInt();
}while(no == 1);

案例

一个班5名学生的成绩

使用双层for循环打印* 号塔案例

// i 表示行数
 for(int i = 1 ; i <= 20 ; i++){  // i 的取值范围  表示代码的运行次数
    // 每一行 * 的个数
   //  第一行 n-1 空格
    for(int j = 20 - i ;j >0 ; j--){
        System.out.print(" ");
    }
    for(int k = 1 ; k <= 2*i-1 ; k++){
        System.out.print("*");
    }
    System.out.println();
}
测试打印 菱形, 梯形等等

流程控制关键字

//  //在 n = 5 的时候 不打印
 int  n = 0;
 while(n < 10){
     if(n != 5){
         System.out.println(n);
     }
     n++;
 }

continue

作用: 强制循环提前返回, 也就是让循环跳过本次循环中剩余的代码,直接开始进行下一次循环

 for(int m = 0 ; m < 10 ; m++){
    if(m == 5 ){
        // if 之后的代码 不需要执行了
        continue;
    }
    System.out.println(m);
}

break

作用:终止当前循环

在switch 中 作用是 终止当前 switch

跳出指定循环

// 在双层for循环中
f1:for(int i = 0 ; i < 10; i++){
    f2:for(int k = 0 ; k< 10 ; k++){
         if(k == 3){ break f1;}
         System.out.println( i + "--"+k);
     }
}

return

结束当前方法, 并返回到程序的调用位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值