Java选择结构中的三种if语句
if语句
概念
if语句是单条件分支语句,即根据一个条件来控制程序执行。
语法格式
if (比较表达式) {
语句体;
}
执行流程
- 先计算比较表达式的值,看其返回值是true还是false
- 如果是true,就执行语句体
- 如果是false,就不执行语句体
注意事项
- 比较表达式无论简单还是复杂,结果必须是boolean类型。
- if语句中的{}可以省略不写,但为了增强程序的可读性,最好不要省略。
**if-else语句
概念
if-else是单条件分支语句,即根据一个条件来控制程序执行。
语法格式
if (比较表达式) {
语句体1;
}
else {
语句体2;
}
执行流程
- 先计算表达式的值,看其返回值是true还是false
- 如果是true,就执行语句体1
- 如果是false,就执行语句体2
练习题
获取两个数据中的最大值
源代码如下:
import java.util.Scanner;
public class demo9 {
public static void main(String[] avgs) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个整数:");
int x = sc.nextInt();
int y = sc.nextInt();
if (x > y) {
System.out.println("max = " + x);
}
else
{
System.out.println("max = " + y);
}
}
}
if-else if-else语句(级联语句)
概念
if-else if-else语句是多条件分支的语句
语法格式
if (比较表达式1) {
语句体1;
} else if (比较表达式2) {
语句体2;
} else if (比较表达式3) {
语句体3;
}
…
else{
语句体n+1;
}
注意:
- 如果多个表达式之间没有交集(互斥),则哪个条件表达式声明在上面,哪个条件表达式声明在下面都可以。
- 如果多个表达式之间是包含关系,则需要将范围小的条件表达式声明在范围大的条件表达式的上面。
执行流程
- 先计算比较表达式1,看其返回值是true还是false
- 如果是true,则执行语句体1,if语句结束
- 如果是false,接着计算比较表达式2,看其返回值是true还是false
- 如果是true,就执行语句体2,if语句结束
- 如果是false,接着计算比较表达式3,看其返回值是true还是false
- 如果都是false,就执行语句n+1
练习题
使用if语句的嵌套获取三个数据中的最大值
源代码如下:
import java.util.Scanner;
public class demo11 {
public static void main(String[] avgs) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入三个数据:");
int x = sc.nextInt();
int y = sc.nextInt();
int z = sc.nextInt();
if (x > y) {
if (x > z) {
System.out.println("最大值是:" + x);
} else {
System.out.println("最大值是:" + z);
}
} else { //y<=x
if (y > z) {
System.out.println("最大值是:" + y);
}else {
System.out.println("最大值是:" + z);
}
}
}
}
**if语句和三元运算符的区别
三元运算符实现的,都能采用if语句实现,反之不成立
面试题
- 什么时候if语句实现不能用三元运算符改进?
- 当if语句控制的操作是一个输出语句时,不能用三元运算符改进
原因:三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
Scanner类
- Scanner类提供了获取byte、short、int、long、float、double、boolean、String类型变量的方法。注意:没有提供获取char类型变量的方法,需要使用**sc.next().charAt(0)**来获取。
- 使用完Scanner类之后,输入**sc.close()**关闭以避免内存泄漏。
获取随机数
1.需求:获取一个[a,b]范围的随机整数?可以使用通用公式:(int)(Math.random()*(b-a+1))+a