目录
1、选择结构
概念:根据已知条件进行逻辑判断,满足条件后执行相应的操作
2、基本if选择结构
2.1基本if选择结构
语法:
if(关系表达式){
语句体
}
判断关系表达式返回的结果,如果为true则执行语句体,如果返回false则不执行语句体
执行流程:
- 对布尔表达式进行判断。
- 结果为true,则先执行代码块,再执行后续代码。
- 结果为false,则跳过代码块,直接执行后续代码。
代码示例:
package Day03;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入你的年龄:");
int age = input.nextInt();
if (age >= 18){
System.out.println("你已经成年");
}
System.out.println("程序结束");
}
}
2.2 if else选择结构
语法:
if(布尔表达式){
//代码块1
}else{
//代码块2
}
执行流程:
- 对布尔表达式进行判断。
- 判断关系表达式返回的结果,如果为true则执行语句体,如果返回false则不执行语句体
代码示例:
public class Demo03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年龄");
//获取控制台录入的数据并赋值为int类型的变量,变量名为age
int age = sc.nextInt();
if(age >= 18){
System.out.println("你已成年");
}else{
System.out.println("你未成年");
}
System.out.println("程序结束");
}
}
2.3 多重if else选择结构
语法:
f(关系表达式1){
语句体1
}else if(关系表达式2){
语句体2
}else if(关系表达式3){
语句体3
}else{
语句体4
}
执行流程:
- 关系表达式1返回的结果如果为true则运行语句体1,结束if语句
- 如果关系表达式1返回的是false,判断关系表达式2,如果为true则运行语句体2,结束if语句
- 如果关系表达式2返回的是false,判断关系表达式3…
…- 如果前面的if和else if 判断都为false,则执行else里面的语句体
代码示例:
public class Demo04 {
public static void main(String[] args) {
//Alt+回车
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
if(age < 10){
System.out.println("熊孩子你好");
}else if(age <18){
System.out.println("精神小伙");
}else if(age <30){
System.out.println("社会精英");
}else if(age <50){
System.out.println("猛男大叔");
}else{
System.out.println("糟老头子");
}
System.out.println("程序结束");
}
}
2.4 嵌套if选择结构
**
语法:
if(外层表达式){
if(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}
执行流程:
- 当外层条件满足时,再判断内层条件。
代码示例:
public class Demo05 {
public static void main(String[] args) {
//Alt+回车
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
//在进行年龄段判断前,判断年龄是否合理
if(age > 0 && age < 150){
if(age < 10){
System.out.println("熊孩子你好");
}else if(age <18){
System.out.println("精神小伙");
}else if(age <30){
System.out.println("社会精英");
}else if(age <50){
System.out.println("猛男大叔");
}else{
System.out.println("糟老头子");
}
}else{
System.out.println("你输入的年龄有误");
}
System.out.println("程序结束");
}
}
3、switch分支结构
语法:
switch(表达式){
case 数值1:
语句体1;
break;
case 数值2:
语句体2;
break;
case …
…
default:
语句体n+1;
break;
}
操作流程:
当程序运行到switch语句的时候,表达式与数值1进行比较,如果返回true,则执行语句体1,当遇到break,则结束switch语句
如果返回false,则与数值2进行比较,
如果与数值2比较的结果是true,则执行语句体2,当遇到break,则结束switch语句
如果返回false,则与数值3进行比较,
…
如果表达式与所有数值进行比较均返回false,则执行default里的语句体
代码示例:
package Day03;
import java.util.Scanner;
public class switchTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入数字1-7:");
int num = sc.nextInt();
switch (num){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 61:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入错误,不在范围(1-7)");
}
}
}
运行结果:
示例2:
package Day03;
import java.util.Random;
public class switchTest02 {
public static void main(String[] args) {
System.out.println("-----今天吃什么选择器-----\n");
int i = 1;
while(i<=27){
Random ra = new Random();
//nextInt() -- 生成int类型的随机数,范围为[0,1),包含0不包含1
//nextInt(8) -- 生成int类型的随机数,范围为[0,8),包含0不包含8
//nextInt(8) + 1 -- 生成int类型的随机数,范围为[0,8),包含0不包含8,
//然后再基础上加1,则为[1,9),包含1不包含9
int num = ra.nextInt(8)+1;
int num1 = ra.nextInt(25);
int num2 = ra.nextInt(61);
int num3 = ra.nextInt(61);
System.out.println("----------"+i+"----------");
switch (num){
case 1:
System.out.print("今天吃:猪肚鸡");
System.out.println(num1+":"+num2+":"+num3);
break;
case 2:
System.out.println("今天吃:吃火锅");
System.out.println(num1+":"+num2+":"+num3);
break;
case 3:
System.out.println("今天吃:黄焖鸡");
System.out.println(num1+":"+num2+":"+num3);
break;
case 4:
System.out.println("今天吃:螺蛳粉");
System.out.println(num1+":"+num2+":"+num3);
break;
case 5:
System.out.println("今天吃:宫保鸡丁");
System.out.println(num1+":"+num2+":"+num3);
break;
case 6:
System.out.println("今天吃:梅州腌面");
System.out.println(num1+":"+num2+":"+num3);
break;
case 7:
System.out.println("今天吃:沙县国际连锁大酒店");
System.out.println(num1+":"+num2+":"+num3);
break;
case 8:
System.out.println("吃条铁,吃什么吃");
System.out.println(num1+":"+num2+":"+num3);
break;
}
i++;
}
}
}
运行结果:
注 意 : \color{red}{ 注意: } 注意:
- 进行范围判断选择使用if语句 进行等值判断选择使用switch语句 break是否
- 可以忽略不写 break 在 switch
- 语句中是结束 switch 语句的作用 当其中一个 case 判断返回 true ,执行对应的语句体后如果没有 break,则继续往下执行下一个 case 的内容,直到遇到 break 或者整个 switch 语句结束。
- default是否可以不写:可以
- default位置是否要在最后 如果每个 case 语句都包含 break ,default 的位置则在哪都不影响程序的执行 如果存在
- case 语句缺失 break,则 default 的位置则会影响程序的执行。
4、课后作业
题目:
根据你的收入进行购车
如果你的月收入5k以下,购买雅迪电动车
月收入5k-10k,购买比亚迪
月收入10k-20k,购买奥迪
月收入20k-50k,购买保时捷
月收入50k以上,购买玛莎拉蒂
代码示例:
package homework;
import java.util.Scanner;
/**
* @author Ran
* @since JDK 1.8
* 根据你的收入进行购车
* 如果你的月收入5k以下,购买雅迪电动车
* 月收入5k-10k,购买比亚迪
* 月收入10k-20k,购买奥迪
* 月收入20k-50k,购买保时捷
* 月收入50k以上,购买玛莎拉蒂
*
*/
public class work01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
System.out.print("\n请输入你的月收入,单位为K(输入“-1”结束程序):");
double income = sc.nextDouble();
if (income==-1){
break;
}
if(income >=50){
System.out.println("大佬买玛莎拉蒂吧");
}else if(income>=20){
System.out.println("保时捷不错");
}else if (income>=10){
System.out.println("可以买奥迪了");
}else if (income>=5){
System.out.println("国产之光比亚迪");
}else if(income>0){
System.out.println("好家伙,雅迪电动车给我冲");
}else{
System.out.println("输入有误,请重新输入");
}
}
}
}