Chapter04
控制结构
顺序控制
从上到下逐行执行,无跳转和判断
先定义再使用
分支控制(if else switch)
if-else
单分支
if(条件表达式){
执行代码块
}
当条件表达式为真,执行{}里的代码,如果为false,不执行。(如果{}只有一条语句,{}可以省略)
双分支
if ( ) {
} else {
}
练习
多分支
if () {
} else if () {
}
……
else{
}
特别说明: 多分支也可以没有最后的else
练习
嵌套分支
规范:不要超过3层,可读性不好
Switch分支控制
语法:
switch(表达式) {
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
default:
default语句块;
//break;
}
-
细节
1.表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
- switch表达式返回值必须是byte,short,int,char,enum(枚举),string
- case子句中的值必须是常量,计算得到的常量也可以(常量表达式),不能是变量。
- default子句可选,没有匹配的case,执行default。
- break语句在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾
练习
穿透
如果判断的具体数值不多,而且符合byte,short,int,char,enum,string这六种类型,建议用switch。
对结果为boolean类型判断,使用if,范围更广
循环控制(for while do.. while 多重循环)
for循环控制
语句
for (循环变量初始化;循环条件;循环变量迭代) {
循环操作;
}
循环条件是返回值是True或False的表达式
如果变量i在for循环之后还想使用,写在for内部,该变量仅作用于此循环 可以写 for( ; 循环条件 ; )
for(;;)表示一个死循环
循环初始值、循环变量迭代 可以有多条语句,但是类型要一样,并且中间用逗号隔开。
↓升级版,可以获取输入的值来自定义范围和倍数↓
while循环控制
循环变量初始化;
while (循环条件) {
循环体语句;
循环变量迭代;
}
do.. while循环控制
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
先执行,再判断,至少执行一次。分号结尾
多重循环
//统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]。统计三个班及格人数,每个班有5名同学。
九九乘法表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*思路分析
* 1.先打印一个矩形
* 2. 打印半个金字塔
* *
* **
* ***
* ****
* *****
* 3.3。打印整个金字塔
* 第1层有1个* 2*1-1 有4=(总层数-1)个空格
*** 第2层有3个* 2*2-1 有3=(总层数-2)个空格
***** 第3层有5个* 2*3-1 有2=(总层数-3)个空格
******* 第4层有7个* 2*4-1 有1=(总层数-4)个空格
********* 第5层有9个* 2*5-1 有0=(总层数-5)个空格
4.打印空心金字塔
当前行第一个位置是*,最后一个位置也是*
* 第1层有1个*
* * 第2层有2个*
* * 第3层有2个*
* * 第4层有2个*
********* 第5层有9个*
*/
break
break语句用于终止某个语句块的执行,
一般在switch或循环中
break语句出现在多层嵌套的语句块时,可以通过标签指明要终止的是哪一层的语句块,例如:laber1(任意)
break语句可以指定退出那一层
label1是标签,自定义名字
break后指定到哪个label就退出到哪里
如果没有break标签,默认退出最近的循环体
//实现登录验证,有3次机会,// 如果用户名为”丁真”,// 密码“666“提示登录成功否则提示还有几次机会,请使用for+break完成
continue
i = 3;
i = 4;
i = 5;
return
return使用在方法,表示跳出所在方法
return写在main方法,会退出程序