第四章:控制结构
- 顺序
1.1 介绍
顺序控制:程序从上到下执行,中间没有跳转和判断。 - 分支
2.1 介绍
让程序有选择的执行。
单分支 if();
双分支 if()—;else—;
多分支 if()—;else if()—;else—;
switch
2.3 switch细节:
表达式数据类型,应和case后的常量保持一致。
或者可以自动转换成可以相互比较的类型。
switch表达式的返回值必须是(byte,short,int,char,enum,string)
不可以是浮点型
case字句中的值必须是常量或常量表达式,不能是变量。
case num : System.out.println(“num是变量!”); // 编译不通过。
default子句可以不写,当没有case满足时执行default。
如果没有default则直接break;跳出switch。
如果没有写break;程序会顺序执行到结尾;(case穿透)
2.4 switch例子:
// 对学生成绩大于60的输出合格,小于60的输出不合格
// 成绩最大100分
// [60,100] 合格,[0,60) 不合格。
// 想法:用(int)score / 60,如果score = 1 合格, = 0不合格。
2.5 switch和if的选择:
如果要判断的情况不多,且符合(byte,short,int,char,enum,string)几种类型,就用switch。
其他情况: 对区间进行判断、对结果为boolean判断,建议用if,if的范围更广。 - 循环(for、while、do while)
3.1 介绍
可以使代码重复执行。
3.2 基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
说明
for循环四要素:①变量初始化,②循环条件,③循环操作语句,④循环变量迭代。
细节
循环条件是一个返回值为boolean的表达式。
可以写成 for(;循环判断条件;),其中的初始化和变量迭代可以写到其他地方。但是;一个都不可以丢。
循环初始值可以有多条初始化语句,但要求一样,并且中间用逗号隔开。
循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
eg1:
int i = 1;
for(; i <=10;){
System.out.println(“第”+i+“次循环!”);
i++;
}
eg2:
for(int i = 1,int j = 2 ; )
for(;😉;表示一个死循环。
解for循环: 【化繁为简,先死后活。】
化繁为简:将复杂的需求拆解成简单的需求,逐步完成。
先死后活:先考虑固定的值,然后转成变量。
3.1 while循环
基本语法
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
};
说明:while也有4要素,只是4要素存在的位置不一样。
4. break
1.1 介绍
终止循环
如果不用标签的话:break终止它当前的循环(它自己被包含在哪个循环就终止哪个)
如果用了标签:终止标签段的循环。
public static void main(String[] args){
String name = “”;
String pass = “”;
int chance = 3;
Scanner sc = new Scanner(System.in);
for( int i = 1; i <= 3; i++){
System.out.println(“请输入您的用户名:”);
name = sc.next();
System.out.println(“请输入您的密码:”);
pass = sc.next();
if( “刘畅”.equals(name) && “666”.equals(pass) ){
System.out.println(“登录成功~”);
break;
}
chance --;
System.out.println(“用户名或密码错误,您还有”+chance+“次机会。”);
}
}
- continue
1.1 介绍
跳出本次循环:
如果不用标签的话:continue结束它当前的这次循环(它自己被包含在哪个循环就结束哪个)
如果用了标签:结束标签段的循环。
public static void main(String[] args){
label01:
for(int j = 0; j < 4; j++){
for(int i = 0; i <= 10; i++){
if(i == 2){
continue label01;
}
System.out.println("i = "+i); // 打印4遍[0,1]
}
}
} - return
1.1 介绍
使用在普通方法上:
结束这个方法。
使用在main方法上:
结束程序。