编程过程中三种基本流程结构
- 顺序结构
- 分支结构
- 循环结构
顺序结构
按照从上到下的顺序依次执行每一条指令。
分支结构
if-else
switch-case
if-else
三种格式:
- if(条件表达式){
执行代码块;
}
- 二选一
if(条件表达式){
执行代码块1;
} else {
执行代码块2;
}
- 多选一
if(条件表达式1){
执行代码块1;
} else if(条件表达式2){
执行代码块2;
} else if(条件表达式3){
执行代码块3;
}
...
else {
执行代码块n;
}
总结:
- 条件表达式必须是boolean表达式(关系表达式或者逻辑表达式)、布尔变量
- 当执行代码块只有一条语句时,可以省略
{}
,但是建议保留{}
- if-else语句可以嵌套使用,但不建议嵌套层数过多,容易逻辑紊乱。
- 当有多个条件是“包含”关系时,范围小的条件应该先于范围大的条件执行判断。
注意:
-if-else的就近原则;
if(x > 3)
if(y > 2)
System.out.println("a");
else
System.out.println("b");
分析:(else 与最近的 if 相匹配)
实际的结构是
if(x > 3)
if(y > 2)
System.out.println("a");
else
System.out.println("b");
switch-case
switch(表达式) {
case 常量1 :
执行语句1;
Break;
case 常量2 :
执行语句2;
Break;
...
default :
执行语句n;
Break;
}
总结:
- 工作流程:根据switch表达式中的值,依次匹配每个case的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句,当调用完执行语句之后,则仍然继续向下执行其他case结构中的执行语句(也会执行default中的语句),直到遇到break关键字或者switch-case结构末尾结束为止。
break
,在switch-case结构中表示一旦执行到此关键字,就跳出switch-case结构。是一个可选关键字。default
:相当于if-else中的else,default结构是可选的。位置是灵活的。不是必须放在末尾。记住:不管default
放在什么位置,只有所有case都不满足时才会执行,即使放在switch-case的开头也不会被先执行。
注意:
- switch结构中的表达式,只能是以下6种类型:byte、short、char、int、枚举类型、String类型。
case
之后只能声明常量,不能声明范围,不能是变量名或不确定的表达式值;
技巧1:如果switch多个case执行语句相同可以考虑合并。
技巧2:巧用break;计算输入的日期是某年的第几天。case可以考虑从12月份到1月份来写,避免冗余的编码。
if-else 与 switch-case的区别:
- 凡是可以使用switch-case的结构,都可以使用if-else,反之,不成立。
- 在写分支结构时,当发现既可以使用switch-case,又可以使用if-else时,优先选择使用switch-case。原因:switch-case执行效率稍高。
实现从控制台输入数据
1. 导入Scanner包
import java.util.Scanner;
2. 创建Scanner实例
Scanner scan = new Scanner(System.in);
3. 调用Scanner的方法获取输入的值
int value = scan.nextInt();//获取不同类型的数据调用不同的方法
Tips:
next(); //返回String类型
nextByte();//返回byte类型
nextShort();//返回short类型
nextInt();//返回int类型
nextFloat(); //返回float类型
nextDouble();//返回double类型
nextBoolean(); //返回boolean类型
如何获取一个随机数
如果想获取[a, b]区间的整数,那么
公式:(int)(Math.random() * (b - a + 1) + a);
举例:
[10, 99]
(int)(Math.random() * (99 - 10 + 1) + 10);