选择结构和分支结构
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用于处理某个值属于等值的情况