小东吖 之 Java的流程控制

java的流程控制
1.顺序结构 代码由上至下依次顺序执行

分支结构
2.分支结构 if switch (两个关键字)
if形式一:
if(判断条件){
语句体
语句1;
语句2;

}
如果判断条件成立 就执行 语句体(语句体可以是多条语句)
例如:

//声明一个变量a并初始化为19
int a = 19;
//如果a大于0 则执行语句体 输出你很棒
if(a > 0){ 
  System.out.println("你很棒")
}

结果

你很棒

形式二:
if(判断条件){
语句体1;
}else{
语句体2;
}
如果判断条件成立 则执行语句体1 反之不成立 执行语句体2

int number = 18;
// 如果 number大于10 则执行语句1 否则执行语句2
if(number > 10){
    System.out.println("hi");// 语句1
}else{
    System.out.println("hello");// 语句2
}

结果

hi

形式三:
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}else{
语句体3;
}
从判断条件1开始判断 如果成立 就执行判断条件后的 语句体
其余条件将不再判断 直接跳过
如果条件不成立 则继续判断条件2…
如果所有条件都不成立 则执行 else 大括号的语句

//从判断条件1开始判断 如果成立 就执行判断条件后的 语句1
  其余条件将不再判断 直接跳过
  如果条件不成立 则继续判断条件2...
  如果所有条件都不成立 则执行 else 大括号的语句4
int score = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎来到成绩评定系统");
System.out.println("请输入一个成绩:");
score = scanner.nextInt();
if(score > 90) { // 判断条件1
    System.out.println("成绩优秀"); // 语句1
}else if(70 < score){// 判断条件2
    System.out.println("成绩良好"); // 语句2
}else if(60 < score) {// 判断条件3
    System.out.println("成绩合格"); // 语句3
}else {
    System.out.println("成绩不合格"); // 语句4
    }

结果

欢迎来到成绩评定系统
请输入一个成绩:
18
成绩不合格

大家看到这里是不是在想什么时候使用if语句 什么时候使用switch?
其实很简单 大家都想着怎么 方便 怎么用

当判断条件 是一个区间的时候 使用if语句比较简单
当判断条件 是几个值的时候 使用switch 相对简单
理论上来说 能用if的题 一定要用switch来解决 只是难易程度不同

循环结构
3.循环结构 while do-while for (三种结构)

  1. while 循环
    1️⃣
    while(循环的判断条件){
    2️⃣
    循环体
    }
    循环的规则:
    当判断条件成立时 执行循环体
    当判断条件不成立时 结束循环
    当循环条件恒成立时 会出现死循环
    可以给死循环写一个出口 来结束循环

    执行顺序 1 ->2 ->1 ->2 ->1 -> 判断条件不成立 停止循环

    大家有可能第一次接触循环 不知道如何去分析 大家看我的
    例如:

    声明一个变量
    变量只声明 没有初值的时候 不能直接使用
    1.初始化 循环增量
    2.寻找循环的判断条件
    3.写循环体
    注意: 循环体中一定记住 循环增量要进行改变

打印 1-10的和

//累加思想 可以利用这个思想解决一堆问题 
int number = 0;//定义循环变量(求和 相当于计算循环增量的和)
int sum =0; //保存计算的结果
while (number <= 10) {
//与循环增量相加 保存结果
//用每次保存结果 与循环量相加
//一直加到10 结束
    sum = sum + number;
    number++;
}
//根据需求来选择打印的位置
System.out.print(sum);

结果

55
//死循环
while(true){
   System.out.println("吃饭")// 这时会一直出现死循环
}

//想要走出死循环 就要写一个出口

int number1 = 0;
while (true) {
// 写一个出口 来停止循环 
// 死循环的出口都是写在最上面

if (number1 == 5) {
    break;
        }
   System.out.println("吃饭"); // 在这个时候就会跳出来循环
   number1 ++;
        }

结果

吃饭
吃饭
吃饭
吃饭
吃饭

循环结构2

do{
1️⃣
循环体(循环的内容)
2️⃣
}while(循环条件)

循环的规则
先执行一次循环体(无论条件成立与否都会执行一次循环体) 再去判断循环条件
如果成立 就执行循环体 反之 不成立 结束循环
先走 1️⃣ -> 2️⃣

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
例如:

打印5遍睡觉
int number = 0;
do {
   System.out.println("睡觉");
  //每次循环 修改循环增量
   number++;
} while (number < 5);// 判断循环条件

结果

睡觉
睡觉
睡觉
睡觉
睡觉

循环的第三种形式(重点)
for(表达式1;判断条件;表达式2){ 表达式1
循环体
}
1️⃣ 2️⃣ 3️⃣
for(int i = 0;i < 10;i++){
4️⃣
System.out.println(“睡觉”);
}
执行顺序
1 -> 2 -> 4 -> 3 ->2 ->4 ->3
注意:初始化循环增量 只走一次
例如:

//打印 10次睡觉
for(int i = 0; i < 10; i++) {
     System.out.println("睡觉" + i+ "次");
    }

如果我这样写 大家觉得的对不对?

for(int i = 0; i < 10; i++) {
    }
System.out.println("睡觉" + i+ "次");

肯定不对的 一定要注意
for 循环中声明的 循环变量 i 的作用域
仅仅在 循环中可以访问 除了循环就访问不到了
而且 在同一作用域中 变量名不能重复 (之前变量命名的时候说过的)
再给大家说个例子

计数器思想 
      使用for循环 1-100中 是7的倍数 的个数 打印个数
         1. 输出1-100的数
         2. 判断7的倍数 % 7 = 0
         3.记录一下 有给多少个数

        int number = 0;
        for (int i = 1; i < 101; i++) {
            if(i % 7 == 0) {
                number++; //记录符合要求的次数
            }
        }
        System.out.println("是7的倍数 的个数:" + number);// 输出总共的数

结果

是7的倍数 的个数:14

学完 while 和 for 两种循环 我们该怎么选择使用哪个?

如果循环的增量只是用来控制循环的次数
再循环外面 不需要使用时 可以选取for循环
反之 循环变量在循环外 你可以继续使用或操作
这时 你可以选择while循环

既然有 for循环 肯定就有嵌套了
格式为
for( ){

for(){
}
}

例如:
打印下面图形 使用for循环
****
****
****
****
//外层循环控制? -> 控制行数
//内层循环控制? -> 控制 每一行 有几个元素

             1️⃣        2️⃣      3️⃣
    for (int i = 0; i < 4; i++⃣️⃣){
              4️⃣        5️⃣      6️⃣
         for (int j = 0; j < 4; j++) {
                 7️⃣
        System.out.print("*");
    }
    //换行的意思
           8️⃣
    System.out.println("");
}

执行顺序
1 -> 2
-> 8 -> 5-> 7 -> 6 -> 5 -> 7 -> 6 -> 5(不成立时结束内循环)
-> 8 -> 3-> 2

大家可以思考一下 理一理思绪

// 九九乘法表
for (int i = 1; i < 10; i++) {
    for (int j = 1; j < i+1; j++) {
        System.out.print(j +"*" + i + "=" + i*j + "\t");
    }
        System.out.println("");
    }

第一个 for 循环:代表行数。定一个整型变量 i, 它的初始值是 1;判断 i 是否小于10;如果成立, i 就自增 1。

第二个 for 循环:代表列数。定一个整型变量 j, 它的初始值是 1;判断 j 是否小于 i+1;如果成立, j 就自增 1。
结果

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值