Java SE笔记
三.Java流程控制语句
1.流程控制
- 程序的执行是多种多样的
(1)可能自上而下
(2)可能根据条件进行跳转
(3)可能需要进行重复操作 - Java利用流程控制语句对这些复杂操作进行控制。
- 流程控制语句包括:
顺序结构、选择结构、循环结构、跳转语句。
2.顺序结构
- 自上而下进行
- 顺序执行语句,直到结束
3.选择结构
- 选择结构或分支结构,根据一个判断表达式的结果不同,执行不同的语句。
- 选择结构包括if、switch
if语句
- 条件表达式可以是任何一种逻辑表达式
- 如果表达式的值为false,则直接执行后面的语句
- 如果大括号中,只有一条语句,可以省略大括号(推荐不省略);
int x = 0;
if(x==1){
System.out.println("x的值为1");
}
System.out.println("x的值为"+x);
x的值为0
if else语句
- 变量 = 布尔表达式 ? 语句1:语句2
- 如果布尔表达式的值为true,则执行语句1
- 如果布尔表达式的值为false,则执行语句2
int x = 1;
int y = 0;
if(x<y){
System.out.println("x比y小");
}else{
System.out.println("x比y大");
}
x比y大
- 在控制台输入使用Scanner类,位于java.util表
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数:");
int x = scan.nextInt();
System.out.println("请输入第二个数:");
int y = scan.nextInt();
if (x>y){
System.out.println("第一个数大于第二个数");
}else{
System.out.println("第二个数大于第一个数");
}
请输入第一个数:
2
请输入第二个数:
5
第二个数大于第一个数
复杂条件选择结构
- 判断条件:需要多种情况作为判定条件的时候,使用逻辑运算符连接,根据需要选择使用&&、||或!
int score = 90;
if (score>=90&&score<=100){
System.out.println("成绩 优秀");
}
成绩 优秀
4.多重选择结构
int score = 90;
if (score<60){
System.out.println("成绩不合格");
}else if(score<75){
System.out.println("成绩合格");
}else if(score<90){
System.out.println("成绩良好");
}else{
System.out.println("成绩优秀");
}
成绩优秀
5.嵌套选择结构
- 足球比赛,积分高的进入下一级比赛,如果两队积分一致,需要输入进球数量。比较进球数量
Scanner scan = new Scanner(System.in);
int team_a = 5;
int team_b = 5;
if(team_a==team_b){
System.out.println("请输入A队进球数");
int num_a = scan.nextInt();
System.out.println("请输入B队进球数");
int num_b = scan.nextInt();
if(num_a>num_b){
System.out.println("A队出线,进入下一轮比赛");
}else{
System.out.println("B队出线,进入下一轮比赛");
}
}else{
if(team_a>team_b){
System.out.println("A队出线,进入下一轮比赛");
}else{
System.out.println("B队出线,进入下一轮比赛");
}
}
请输入A队进球数
3
请输入B队进球数
5
B队出线,进入下一轮比赛
6.switch选择结构
- 多分支结构,可以代替复杂的if选择结构
switch语句有关规则- switch(表达式)中表达式的返回值必须是下述几种类型之一:int, byte, char, short, 枚举, 字符串(jdk1.7后);
- case子句中的值必须是常量,且所有case子句中的值应是不同的;
- default子句是任选的;
- break语句用来在执行完一个case分支后使程序跳出switch语句块;
- 表达式值与case值相等,执行后面的语句,遇到break后退出switch
- 如不设置break;后续case会全部执行
int n = 2;
int result;
switch(n+1){
case 1: System.out.println("Block A");
result = n;
break;
case 2:System.out.println("Block B");
result = n*n;
break;
case 3:System.out.println("Block C");
result = n*n*n;
break;
default: result = 0;
}
System.out.println("result="+result);
Block C
result=8
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个月份,我能告诉你它属于什么季节");
int month = scan.nextInt();
switch(month){
case 12:
case 1:
case 2:
System.out.println("您输入的月份为冬季。");
break;
case 3:
case 4:
case 5:
System.out.println("您输入的月份为春季。");
break;
case 6:
case 7:
case 8:
System.out.println("您输入的月份为夏季。");
break;
case 9:
case 10:
case 11:
System.out.println("您输入的月份为秋季。");
break;
default:
System.out.println("没有"+month+"月份");
}
请输入一个月份,我能告诉你它属于什么季节
11
您输入的月份为秋季。
- switch 做一个简单的计算器
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
int a = sc.nextInt();
System.out.println("请输入运算符号【+ - * /】");
String b = sc.next();
System.out.println("请输入第二个数");
int c = sc.nextInt();
switch (b){
case "+" :System.out.println("计算结果:"+a+"+"+c+"="+(a+c));
break;
case "-" :System.out.println("计算结果:"+a+"-"+c+"="+(a-c));
break;
case "*" :System.out.println("计算结果:"+a+"*"+c+"="+(a*c));
break;
case "/" :System.out.println("计算结果:"+a+"/"+c+"="+(a/c));
break;
default: System.out.println("错误");
}
请输入第一个数
1
请输入运算符号【+ - * /】
+
请输入第二个数
2
计算结果:1+2=3
多重if结构和switch结构的比较
- 根据具体的情况选择使用合适条件结构
- 多重if结构和switch结构都可以用来实现多路分支。
- 多重if结构用来实现两路、三路分支比较方便,而switch结构实现三路以上分支比较方便。
- 有些问题只能使用多重if结构来实现,例如要判断一个值是否处在某个区间的情况。
- 使用switch结构有一定的局限性
- 在使用switch结构时,应注意分支条件要求是整型表达式、字符串或枚举类型,而且case语句后面必须是常量表达式。