Java基础复习第三天:流程控制语句if()...else、switch() case、do while()、for循环()

时间:2022-07-28 20:30:55

第一章 流程控制
1.流程控制的分类
a.顺序结构:同一个方法中的代码一定是从上到下依次执行的

 

b.选择结构/判断结构

判断语句if,一共有三种格式:

格式一:
if(判断语句){

代码块;

}

....其他代码

执行流程:

当代码执行到if语句时,首先计算判断语句的结果

如果是true,那么执行代码块,如果是false跳过代码块

 

 

格式二:

if(判断语句){

代码块1;

} {

代码块2;

}

...其他代码

执行流程:

当代码执行到if语句时,首先计算判断语句的结果

如果结果是true,执行代码块1,如果是false,执行代码块2

 

注意: 代码块1和代码块2  有且仅有一个会执行

 

格式三:

if(判断语句1){

代码块1;

}else if(判断语句2){

代码块2;

}else if(判断语句3){

代码块3;

}.....else{

代码块n;

}

执行流程:
先判断 判断语句1 如果是true执行代码块1,执行之后整个if流程结束

再判断 判断语句2 如果是true执行代码块2,执行之后整个if流程结束

再判断 判断语句3 如果是true执行代码块3,执行之后整个if流程结束

依次类推....

如果以上所有的判断语句都是false,那么无条件执行else后面代码块n

 

注意: 以上代码块1到代码块n 有且仅有一个会执行

 

总结:

三种if分别什么时候使用?

如果只需要判断一种情况,那么用if的第一种格式

如果只需要判断两种情况,那么用if的第二种格式

如果需要判断多种情况,那么用if的第三种格式

 

选择语句switch 就一种格式:
格式:

switch(表达式/变量名){

case 固定值1:

代码块1;

break;

case 固定值2:

代码块2;

break;

case 固定值3:

代码块3;

break;

....

default: // 默认

代码块n;

break;

}

....其他代码

执行流程:

当代码执行到swtich时,首先计算表达式或者变量的值

取出表达式或者变量的值 与下面固定值进行匹配,如果相等,那么久执行后面的代码块

执行完之后,遇到了break,break含义是结束整个switch

如果所有的固定值都没有匹配的,那么无条件执行default后面的代码块n

 

注意1:  以上代码块1-代码块n 有且仅有一个会执行

 

注意2: switch(表达式)中表达式的数据类型,

JDK7之前的  byte short(char) int 枚举(enum)

JDK7之后新增 String

c.case的穿透

i.break能不能不写???可以不写

 

ii.如果删除了case后面的break那么出现"穿透现象"

什么叫穿透现象:

如果case后面没有break,那么会下一个case后的代码块,而不需判断

iii.使用case的穿透现象改造月份案例,可以达到简化代码的作用

d.循环结构

让一段代码反复的执行

所有的循环结构都有四部分组成:

①.定义性语句(计数器)

②.循环条件(控制循环是否继续)

③.循环体(循环要执行的那段代码)

④.增量/步进语句(让计算器计数)

 

循环结构之for

格式:

for(①.定义性语句(计数器);②.循环条件(控制循环是否继续);④.增量/步进语句){

③.循环体(循环要执行的那段代码)

}

....其他代码

执行流程:

① ---> ②③④ ---> ②③④ ---> ...--->②

 

 

练习1: 打印 10次 "我对面的后面爱凤姐"

// 计数器从0开始 那么 计数器<几 循环就是几次
for (int i = 0;i < 10;i++){
    // 0 1 2 3 4 5 6 7 8 9
    System.out.println("我对面的后面爱凤姐");
}

 

练习2:使用循环,打印1-100之间所有的整数

//1.明确循环次数
for (int i = 1; i<101;i++){
    //2.分析规律:
    /*
    *   i的值     要打印的值
    *   1           1
    *   2           2
    *   3           3
    *   x           x
    *   规律:要打印的值 和 i的值是一样的
    * */
    /*
    *  i = 1 2 3 4 5....100
    *  打印 = 1 ..... 100
    *  i 和 要打印的值一一对应
    * */
    System.out.println(i);
}

 

练习3:使用循环,打印1-100之间所有的整数的累加和:

//定义一个求和的变量名
        int sum = 0;
        //1.先想办法打印1-100
        for (int i = 1;i < 101;i++) {
            // i = 1 2 3 4... 100
            //打印= 1 2 3 4....100
//            System.out.println(i);
            //2.把要打印的数,加到sum中
//            sum = sum+i;
            sum+=i;
            /*
            *  sum = 1;
            *  sum = 1 + 2
            *  sum = 1 + 2 + 3;
            *  sum = 1 + 2 + 3 + 4
            *  ...
            *  sum = 1 + 2 + 3 + 4 ... 100
            *
            * */
        }
        //2.打印sum的值
        System.out.println(sum);

 

练习4:使用循环,计算1-100之间的偶数和

//分步骤慢慢计算

//1.打印1-100所有的数
//2.求1-100的和
//3.求偶数和
int sum = 0;
for (int i = 1; i < 101; i++) {
   //求偶数和
    //判断偶数的条件
    if(i % 2 == 0) {
        sum += i;
    }
}
//4.最后打印偶数和sum
System.out.println(sum);

 

 

循环结构之while

格式:

①计算器;

while(②循环条件){

③循环体;

④增量语句;

}

执行流程:
①--->②③④---->②③④--->②③④ -->.....->②

 

练习1:打印10次"HelloWorld"

//使用while
int i = 0;
while (i < 10) {
    System.out.println("HelloWorld");
    //千万别忘记++
    i++;
}
练习2:计算1-100之间的奇数和

//计算器
int i = 1;
//求和变量
   int sum = 0;
   while(i < 101){
      //判断是否为奇数
        if(i % 2 == 1) {
          //如果是加到sum中
           sum += i;
      }
       i++;
     }
          //打印结果
         System.out.println(sum);

 

循环结构之do...while

①.定义性语句

②.循环条件

③.循环体

④.增量/步进语句

 

格式:

①.定义性语句

do{

③.循环体

④.增量/步进语句

}while(②.循环条件);

执行流程:
           ①③④ ---> ②③④ --> ②③④---> ...--->②

 

do..while循环的特点: 无论循环条件是什么,都会先执行一次循环体

 

总结:for和while和do..while循环的区别

do..while(基本不用的): 循环体至少执行一次

for循环(最常用的):循环结束之后,计数器不能访问

while循环(偶合用用的):循环结束之后,计数器还可以继续使用

 

2.死循环
永不停止的循环

格式:

while(true){

循环体;

}

for(;;){

循环体;

}

如果没有循环体,那么大括号可以省略,但是必须用;结束

while (true);
            for (;;);

3.跳出语句(循环控制语句)
break;

a.第一可以用于switch中,代表结束整个switch

b.第二可以用于循环中,立刻结束整个循环

 

continue;

只能用于循环,跳过本次循环

 

注意: break只能用于swtich和循环,不能用于if

 

4.嵌套循环
一个循环的循环体中又有另外一个循环

格式:

for(;;){

for(;;){

 

}

}

比如:

//从 2011年 到 2013年 这三年的每年365天
for(int j = 2011;j < 2014;j++) {
    for(int i = 1;i<=365;i++){
        System.out.println(j+"年,"+"第"+i+"天");
    }
}

//从 2021年 到 2023年 这三年的每年12月
for(int i = 2021;i < 2024;i++) {
    //12个月
    for (int j = 1; j < 13; j++) {
        //i代表年 j代表月
        System.out.println(i+"年"+j+"月");
    }
}

//打印图形

要求使用嵌套循环,打印以下图形:
* * * * *

* * * * *

* * * * *

 

for(int i = 0;i<3;i++){ //3行
    //每行5个
    for(int j = 0;j<5;j++) {
        System.out.print("* ");
    }
    System.out.println();
}

 

总结: 内层循环体执行的次数 = 外层循环次数 * 内层循环的次数
---------------------
作者:吃茶去
来源:CSDN
原文:https://blog.csdn.net/weixin_41229776/article/details/83962282
版权声明:本文为博主原创文章,转载请附上博文链接!