2019-01-10
主要学习Scannery对象、单if语句、 if-else语句、switch语句
Scanner对象
为什么需要键盘录入数据?
开发当中,数据是动态的不是固定的,所以我们需要把固定的数据更改为键盘录入
如何使用Scanner对象
- 导包
在类名上面加入:import java.util.Scanner; - 创建对象
Scanner input = new Scanner(System.in);
- 定义变量接收用户输入
整数:
int num = input.nextInt();
小数:
double num = input.nextDouble();
字符或者字符串
String num = input.nextLine();或者String num = input.next
注意
- 使用键盘输入获取数据之前建议加入提示性语句
- next系列的方法是阻塞方法,会等待用户输入,用户输入结束,程序继续运行
- java.util.InputMismatchException
异常名称:输入不匹配
产生原因:输入类型和接收类型不匹配
解决方法:类型匹配即可
分支语句
单if语句
格式:
if(条件表达式){
语句体
}
执行流程:
首先判断条件是否成立
成立:执行语句体
不成立:不做任何处理
注意:
- 条件表达式必须是Boolean类型的值
- 如果语句体重只有一条语句,发括号可以省略,一般不省略(提高可读性)
- 记住不要写成if();{}的格式,这样的话,无论是否成立都会执行
if-else语句
格式:
if(条件表达式){
语句体1;
}else{
语句体2;
}
执行流程:
首先判断条件是否成立
成立:执行语句体1
不成立:执行语句体2
注意:
- if-else语句能够用三目运算符改写,能用三目运算符改写的一定可以用改写成if-else语句,反之不一定
生成随机数
int random=(int)(Math.random()*10);
Math.random() :生成随机小数
多重if语句
格式:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}………
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
逐条if语句进行判断
条件匹配,进入语句体
否则对if语句继续匹配
嵌套if语句
格式:
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
判断字符串是否相等使用equals方法
= =只能够比较数值是否相等
switch语句
switch语句的格式:
switch (表达式) {
case 值1 :
语句序列;
[break];
case 值2:
语句序列;
[break] ;
… … … … …
[default:
break ;]
}
switch语句特点:
-
表达式类型可以是一下类型:(byte、short、char、int)
JDK5以后可以使用枚举类型
JDK7以后可以使用字符串
注意:整型比较和计算的时候都是使用int类型来计算或者计较 -
case子句的取值必须是常量表达式,case子句取值不能重复
-
default子句就类似于if语句中else子句,表示一种其他情况,else子句只能够放在if语句的最后面,default子句可以放在任意位置,但是建议放在最后(可读性高)
-
如果没有break子句表示退出switch语句,如果没有break语句,那么会出现break穿透现象
(break穿透现象:在switch语句中,如果没有break语句,那么每一个cease子句会从上往下执行,知道碰到break为止)
if和switch语句的区别
if语句
- 表达式是Boolean类型
- 常用于区间判断
switch语句
- 表达式类型不能是boolean类型,可以是byte short int char String 枚举
- 常用于等值判断
选择语句的选取
- 能用switch语句实现的就一定可以使用if实现,但是反之不一定
- 如果是区间范围采用if,如果是等值判断使用switch