选择结构和分支结构
1. 包的概念
包相当于文件夹,用来方便管理我们的Java文件
包的命名规范:域名倒置,全部小写,
不能以点开头或者结尾,可以包含点,
每出现一个 点相当于分割一个子文件夹举例:com.edu.具体的包名
2. if结构
语法: if(布尔表达式){ //代码块1 }
后续代码... 执行流程: 对布尔表达式进行判断。 结果为true,则先执行代码块1,再执行后续代码。 结果为false,则跳过代码块1,直接执行后续代码。
package com.edu.test1; import java.util.Scanner; // 导包 /** * 需求:根据用户输入的年龄判断是否成年 * */ public class Test2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 红线错误 代码不能执行 System.out.println("请输入您的年龄"); int age = input.nextInt(); System.out.println("您输入的年龄是:" + age); if(age >= 18){ System.out.println("恭喜你,成年了"); } System.out.println("程序结束"); } }
package com.edu.test1; import java.util.Scanner; /** * 需求:根据学生成绩判断是否可以获得奖励 * 如果 * Java成绩大于90 并且 数据库成绩 大于80获得奖励 * 或者 * Java成绩大于75 并且 JS成绩等于100 获得奖励 * * 奖励苹果12袋 * */ public class Test3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 鼠标移动到红线位置 选择导包即可 System.out.println("请输入Java成绩"); int javaScore = input.nextInt(); System.out.println("请输入JS成绩"); int javaScriptScore = input.nextInt(); System.out.println("请输入数据库成绩"); int mysqlScore = input.nextInt(); // 选中代码 ctrl + / 注释 或者取消注释 // Java成绩大于90 并且 数据库成绩 大于80获得奖励 // 或者 // Java成绩大于75 并且 JS成绩等于100 获得奖励 if((javaScore > 90 && mysqlScore >80) || (javaScore > 75 && javaScriptScore == 100)) { System.out.println("恭喜你,奖励苹果12袋!"); } System.out.println("程序结束"); } }
3. if-else结构
语法: if(布尔表达式){ //代码块1 }else{ //代码块2 } 后续代码... 执行流程: 对布尔表达式进行判断。 结果为true,则先执行代码块1,再退出整个结构,执行后续代码。 结果为false,则先执行代码块2,再退出整个结构,执行后续代码。
else不能单独出现的,必须结合if
package com.edu.test2; import java.util.Scanner; /** * 根据用户输入年龄 判断是否成年 进行相应提示 * */ public class Test2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // ctrl + 1 回车导包 System.out.println("请输入年龄"); int age = input.nextInt(); if(age>= 18) { System.out.println("恭喜你,成年了"); }else { System.out.println("未成年"); } System.out.println("程序结束"); } }
package com.edu.test2; import java.util.Scanner; /** * 需求:根据学生成绩判断是否可以获得奖励 * 如果 * Java成绩大于90 并且 数据库成绩 大于80获得奖励 * 或者 * Java成绩大于75 并且 JS成绩等于100 获得奖励 * * 奖励苹果12袋 * * 如果成绩不符合 进行鼓励 * */ public class Test3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 鼠标移动到红线位置 选择导包即可 System.out.println("请输入Java成绩"); int javaScore = input.nextInt(); System.out.println("请输入JS成绩"); int javaScriptScore = input.nextInt(); System.out.println("请输入数据库成绩"); int mysqlScore = input.nextInt(); if((javaScore > 90 && mysqlScore >80) || (javaScore > 75 && javaScriptScore == 100)) { System.out.println("恭喜你,奖励苹果12袋!"); }else { System.out.println("继续加油"); } System.out.println("程序结束"); } }
4. 多重if结构
语法: if(布尔表达式1){ //代码块1 }else if(布尔表达式2){ //代码块2 }else if(布尔表达式3){ //代码块3 }else{ //代码块4 }
多重if中 最后的else根据需求是否编写
执行流程: 表达式1为true,则执行代码块1,再退出整个结构。
表达式2为true,则执行代码块2,再退出整个结构。
表达式3为true,则执行代码块3,再退出整个结构。
以上均为false,则执行代码块4,再退出整个结构。
注意:相互排斥,有一个为true,其他均不再执行, 适用于区间判断。
package com.edu.test3; import java.util.Scanner; /** * 多重if 属于多选1 * 适用于区间判断 * * 需求: * 如果成绩 * 大于90分 优秀 * 大于80分良好 * 大于70分 中等 * 大于等于60分 及格 * 小于60分 不及格 * */ public class Test1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入你的分数"); int score = input.nextInt(); if(score > 90) { System.out.println("优秀"); }else if(score > 80) { System.out.println("良好"); }else if(score > 70) { System.out.println("中等"); }else if(score >= 60) { System.out.println("及格"); }else { System.out.println("不及格"); } System.out.println("====================================="); if(score >= 0 && score < 60) { System.out.println("不及格"); }else if(score >= 60 && score <= 70) { System.out.println("及格"); }else if(score > 70 && score <= 80){ System.out.println("中等"); }else if(score >80 && score <= 90 ) { System.out.println("良好"); }else if(score > 90 && score <= 100){ System.out.println("优秀"); }else { System.out.println("输入分数有误"); } System.out.println("程序结束"); } }
5. 嵌套if
语法: if(外层表达式){ if(内层表达式){ //内层代码块1 }else{ //内层代码块2 } }else{ //外层代码块 }
执行流程: 当外层条件满足时,再判断内层条件。
注意: 一个选择结构中,可嵌套另一个选择结构。 嵌套格式正确的情况下,支持任意组合。
package com.edu.test4; import java.util.Scanner; /** * 嵌套if * 一个完整if结构中 再嵌套另外一个if结构 * * 需求:学校举行百米跑步,时间小于13秒可以进入决赛,然后再根据性别进行分组 * */ public class Test1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入你的跑步时间"); int time = input.nextInt(); if(time < 13) { System.out.println("请输入你的性别"); String sex = input.next(); // 可以进入决赛 // equals() 方法 if(sex.equals("男")) { System.out.println("恭喜你,进入男子组"); }else if(sex.equals("女")){ System.out.println("恭喜你,进入女子组"); }else { System.out.println("性别不合适"); } }else { System.out.println("继续加油,下一届继续参加"); } System.out.println("程序结束"); } }
6. switch 结构
语法: switch(变量|表达式){ case 值1: 逻辑代码1; case 值2: 逻辑代码2; case 值n: 逻辑代码n; default: 未满足时的逻辑代码; }
可判断的类型: byte、short、int、char、String(JDK7+)枚举
使用long时会转换为int造成精度损失,因此不可以使用long
执行流程: 如果变量中的值等于值1,则执行逻辑代码1。 如果变量中的值等于值2,则执行逻辑代码2。 如果变量中的值等于值n,则执行逻辑代码n。 如果变量中的值没有匹配的case值时,执行default中的逻辑代码。
注意:所有case的取值不可相同。
switch结构中需要根据需求添加break关键字,default关键字位置不固定,但是要求写在末尾,提高阅读性,并且default之后必须写上break
package com.edu.test5; import java.util.Scanner; /** * switch结构 * 支持的数据类型:byte short int char String(JDK7+) 枚举 * * 需求:根据名次进行不同的奖励 * 第一名:夏令营一次 * 第二名:苹果12袋 * 第三名:笔记本一本 * 第四名:口头表扬一次 * 其他:继续努力 * */ public class Test1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入你的名次"); int num = input.nextInt(); switch(num) { case 1: System.out.println("夏令营"); break; case 2: System.out.println("苹果12袋"); break; case 3: System.out.println("笔记本一本"); break; case 4: System.out.println("口头表扬一次"); break; default: System.out.println("继续加油"); break; } System.out.println("程序结束"); } }
7. switch和多重if应用场景区分
多重if用于某个值处于连续的区间的情况
switch用于处理某个值属于等值的情况