3. 流程控制语句

2023-12-01 11:13:15 浏览数 (2)

程序设计中规定的三种流程结构

  • 顺序结构
    • 程序从上到下逐行执行 , 中间没有任何判断和跳转
  • 分支结构
    • 根据条件 , 选择地执行某段代码
    • if...else​和switch-case​两种分支语句
  • 循环结构
    • 根据循环条件 , 重复的执行某段代码
    • for , while , do-while​三种循环语句
    • 补充:JDK5.0 提供了foreach​循环,方便的遍历集合、数组元素。

1. 循环结构

语句从上到下逐行执行

2. 分支语句

2.1 if - else 条件判断结构

格式:

代码语言:javascript复制
if(条件表达式) {
	语句块;
}

单分支条件判断 : if

说明: 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或布尔变量

执行流程

  1. 首先判断条件表达式看其结果是true还是false
  2. 如果是true就执行语句块
  3. 如果是false就不执行语句块

双分支条件判断 :if ... else​

格式:

代码语言:javascript复制
if(条件表达式) {
	语句块1;
} else {
	语句块2;
}

多分支条件判断 : if...else if...lese

代码语言:javascript复制
if (条件表达式1) {
  	语句块1;
} else if (条件表达式2) {
  	语句块2;
}
...
}else if (条件表达式n) {
 	语句块n;
} else {
  	语句块n 1;
}

说明:​一旦条件表达式为true,则进入执行相应的语句块。执行完对应的语句块之后,就跳出当前结构。

if...else嵌套​

在 if 的语句块中,或者是在else语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支),就构成了嵌套结构​。

执行特点:

(1)如果是嵌套在if语句块中的,只有当外部的if条件满足,才会去判断内部的条件

(2)如果是嵌套在else语句块中的,只有当外部的if条件不满足,进入else后,才会去判断内部的条件

2.2 switch-case选择结构

语法格式:

代码语言:javascript复制
switch(表达式){
    case 常量值1:
        语句块1;
        //break;
    case 常量值2:
        语句块2;
        //break; 
    // ...
   [default:
        语句块n 1;
        break;
   ]
}

执行流程

执行过程

第1步:根据switch中表达式的值,依次匹配各个case。如果表达式的值等于某个case中的常量值,则执行对应case中的执行语句。

第2步:执行完此case的执行语句以后

  • 情况1:如果遇到break,则执行break并跳出当前的switch-case结构
  • 情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。--->case穿透
  • ......
  • 直到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构

使用注意点:

  • switch(表达式)中表达式的值必须是这几种类型 : byte , short , char , int , 枚举(JDK 5.0) , String(JDK 7.0)
  • case子句中的值必须是敞亮 , 所有case子句中的敞亮相互不相同
  • 同一个switch语句 , 所有case子句中的敞亮值互不相同
  • break语句用来执行完一个case分支后使程序跳出swtich语句块 , 如果没有break , 程序会顺序执行到switch结尾
  • default子句是可选的 , 同时 , 位置也是灵活的 , 当没有匹配的case时 , 执行default语句

3. 循环语句

  • 理解:循环语句具有在某些条件​满足的情况下,反复执行​特定代码的功能。
  • 循环结构分类
    • for 循环
    • while 循环
    • do -while 循环
  • 循环结构四要素
    • 初始化部分
    • 循环条件部分
    • 循环体部分
    • 迭代部分

3.1 for循环

语法格式

代码语言:javascript复制
for(初始化部分 ; 循环条件部分 ; 迭代部分) {
	循环体部分
}

说明:

  • for(;;)中的两个;不能多也不能少
  • ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
  • ②循环条件部分为boolean类型表达式,当值为false时,退出循环
  • ④可以有多个变量更新,用逗号分隔

3.2 while循环

语法格式 : 先判断再执行

代码语言:javascript复制
初始化部分
while(循环条件部分) {
	循环体部分;
	迭代部分;
}

3.3 do-while 循环

语法格式 : 先执行再判断

代码语言:javascript复制
初始化部分;
do {
	循环体部分;
	迭代部分;
}

4. 关键字break 和 continue的使用

代码语言:javascript复制
			适用范围			在循环结构中使用的作用						相同点

break		switch-case
			循环结构			一旦执行,就结束(或跳出)当前循环结构		    此关键字的后面,不能声明语句

continue	循环结构			一旦执行,就结束(或跳出)当次循环结构		    此关键字的后面,不能声明语句

此外,很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它,但使程序容易出错。Java中的break和continue是不同于goto的。

5. Scanner : 键盘输入功能的实现

键盘输入代码的四个步骤

  1. 导包
  2. 创建Scanner类型的对象
  3. 调用Scanner类的相关方法
  4. 释放资源

注意 : 需要根据相应的方法 , 来输入指定类型的值 , 入股输入的数据类型与要求的类型不匹配时 , 会报异常导致程序终止

键盘录入基本代码演示:

代码语言:javascript复制
        // 键盘录入
        System.out.println("请输入:");
        Scanner scanner = new Scanner(System.in);
        String nextLine = scanner.nextLine();
        System.out.println("你输入的数据为:"   nextLine);
        scanner.close();

6. 如何获取一个随机数

1、Math类的random()的调用,会返回一个[0,1)范围的一个double型值

2、Math.random() * 100 ---> [0,100) ** (int)(Math.random() * 100)** ---> [0,99] ** (int)(Math.random() * 100) 5 ----> [5,104]**

3、如何获取[a,b]​范围内的随机整数呢?(int)(Math.random() * (b - a 1)) a

代码语言:javascript复制
        // 随机数获取
        double random = Math.random();
        System.out.println(random);

        int number = (int) (Math.random() * 6)   1;
        System.out.println(number);

0 人点赞