1.2理解if(表达式){
...代码块...
}
1.3做实验表达式的结果必须是boolean类型
true -- 执行代码块
false - 跳出if分支,执行if以外的代码
1.4案列if(false){
System.out.println("...代码块...");
}
System.out.println("if以外的代码");
import java.util.Scanner;
public class Test01{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励萌萌法拉利玩具赛车一辆");
}
}
}
二、复杂if分支
2.1案例
案例一: 人类的健康值在20-25的数值内为健康(健康值算法为:体重(Kg) / 身高(米)的平方)
import java.util.Scanner;
public class Test02{
public static void main(String[] args){
//创建Scanner对象
Scanner scan = new Scanner(System.in);
//输入体重和身高
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(M):");
double height = scan.nextDouble();
//计算健康值
double health = weight/(height*height);
//判断
if(health > 20 && health < 25){
System.out.println("小护士说:"健康,请保持身材哟~~~"");
}
}
}
案例二:爱田奈奈Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
import java.util.Scanner;
public class Test02{
public static void main(String[] args){
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//输入成绩
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();
//判断
if((javaScore>98 && musicScore>80) || (javaScore==100 && musicScore>70)){
System.out.println("奖励爱田奈奈烤肠5根");
}
总结:
1.if可以判断区间
2.if可以判断复杂的条件
*/
}
}
三、if ...else...分支
3.1语法结构
3.2理解if(表达式){
...代码块...
}else{
...else代码块...
}
3.3做实验表达式的结果必须是boolean类型
true -- 执行代码块
false - 执行else代码块
3.4案列if(false){
System.out.println("...代码块...");
}else{
System.out.println("...else代码块...");
}
System.out.println("if分支以外的代码块");
案例:如果上原亚衣Java考试成绩大于98分,就奖励他一个劳斯莱斯,否则就罚他进行编码
import java.util.Scanner;
public class Test03{
public static void main(String[] args){
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//输入成绩
System.out.println("请输入成绩:");
double score = scan.nextDouble();
//判断
if(score > 98){
System.out.println("奖励上原亚衣劳斯莱斯玩具赛车一辆");
}else{//其余情况(成绩小于等于98)
System.out.println("通宵补课编写代码");
}
总结:
if...else...:在二选一的情况下使用
}
}
四、多重if分支 4.1语法结构
4.2理解if(表达式1){
...代码块1...
}else if(表达式2){
...代码块2...
}else if(表达式n){
...代码块n...
}else{
...else代码块...
}
4.3做实验表达式的结果必须是boolean类型从上往下判断,哪个表达式先成立(true),就执行对应的代
码块,执行完毕后直接跳出整个分支语句
else{} -- 其余的情况
else{} -- 根据需求,可写可不写
4.4案列if(true){
System.out.println("...代码块1...");
}else if(true){
System.out.println("...代码块2...");
}else if(true){
System.out.println("...代码块n...");
}else{
System.out.println("...else代码块...");
}
System.out.println("if分支以外的代码");
案例一:人类的健康值在15-20的数值内为偏瘦20-25的数值内为健康25-30的数值内为偏胖(健康值算法为:体重(Kg) / 身高(米)的平方)
import java.util.Scanner;
public class Test04{
public static void main(String[] args){
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//输入体重和身高
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(M):");
double height = scan.nextDouble();
//计算健康值
double health = weight/(height*height);
//判断
if(health > 15 && health <= 20){
System.out.println("小护士说:"偏瘦,多吃垃圾食品、多喝碳酸饮料、多熬夜~~~"");
}else if(health > 20 && health <= 25){
System.out.println("小护士说:"健康,请保持身材哟~~~"");
}else if(health > 25 && health <= 30){
System.out.println("小护士说:"偏胖,多运动,嘿嘿嘿~~~"");
}else{
System.out.println("小护士说:"健康值异常,请去医院进行详细检查"");
}
}
}
案例二:通过键盘录入学生成绩如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”否则如果在60-70之间,则打印“D”否则如果在0- 60之间,则打印“E”否则打印“成绩异常”
import java.util.Scanner;
public class Test04{
public static void main(String[] args){
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//输入成绩
System.out.println("请输入成绩:");
double score = scan.nextDouble();
//判断
if(score >= 90 && score <= 100){
System.out.println("A");
}else if(score >= 80 && score < 90){
System.out.println("B");
}else if(score >= 70 && score < 80){
System.out.println("C");
}else if(score >= 60 && score < 70){
System.out.println("D");
}else if(score >= 0 && score < 60){
System.out.println("E");
}else{
System.out.println("成绩异常");
}
}
}
五、嵌套if分支
5.1案列
案例:学校举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。
import java.util.Scanner;
public class Test05{
public static void main(String[] args){
//创建Scannner类的对象
Scanner scan = new Scanner(System.in);
//输入比赛成绩
System.out.println("请输入比赛成绩:");
double score = scan.nextDouble();
//判断成绩
if(score >= 0 && score < 16){
//输入性别
System.out.println("请输入性别:");
String sex = scan.next();
//判断性别
if(sex.equals("男")){//判断两个字符串内容是否相等
System.out.println("恭喜进入到男子组决赛");
}else if(sex.equals("女")){//判断两个字符串内容是否相等
System.out.println("恭喜进入到女子组决赛");
}else{
System.out.println("性别输入有误...");
}
}else if(score >= 16){
System.out.println("无缘总决赛,谢谢参与...");
}else{
System.out.println("成绩输入有误...");
}
}
}
六、Switch分支
6.1语法结构
6.2理解switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}
6.3做实验表达式的结果可以为:byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7)表达式的结果分别给值1、值2、值n比较,哪个相等就执行对应的代码块如果都不相等,就执行default代码块default代码块根据需求可写可不写break的作用是跳出整个switch分支语句
6.4案列switch(500){
case 10:
System.out.println("10");
break;
case 50:
System.out.println("50");
break;
case 100:
System.out.println("100");
break;
default:
System.out.println("default代码块");
break;
}
System.out.println("switch分支以外的代码");
案例:铃原爱蜜莉参加计算机编程大赛如果获得第一名,将参加1个月马尔代夫旅游如果获得第二名,将奖励苹果Pro笔记本电脑一部 如果获得第三名,将奖励移动硬盘一个否则,晚上给铃原爱蜜莉通宵补课
import java.util.Scanner;
public class Test06{
public static void main(String[] args){
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//输入比赛成绩
String str = scan.next();
//判断
switch(str){
case "第一名":
System.out.println("奖励1个月马尔代夫旅游");
break;
case "第二名":
System.out.println("奖励苹果Pro笔记本电脑一部");
break;
case "第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("铃原爱蜜莉通宵补课");
break;
}
}
}
七、Switch分支深入
7.1面试题
面试题1:case的值可以相同吗?
case的值不可以相同
面试题2:default可以省略吗?
可以省略
面试题3:break可以省略吗?
可以省略
面试题4:default的位置一定要在最后吗?
不一定,但是一般是放在最后(为了可读性)
面试题5:表达式值的类型可以是什么?
回答方式1:byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7)
回答方式2:表达式的类型只能是int,switch底层是把byte、short、char、枚举(JDK1.5)、字符串(JDK1.7)转换为int值
byte 自动转型 int
short自动转型 int
char获取的是字符的ASCII码
枚举 获取对象中的编号(后续讲枚举的时候再了解)
字符串 获取字符串的hash码(数字,后续讲枚举的时候再了解)
面试题6: case值的类型可以不一样吗?
case值的类型如果是兼容的,就可以不一样
switch(97){
case 10:
System.out.println("10");
break;
case 50:
System.out.println("50");
break;
case 'a':
System.out.println("a");
break;
case 100:
System.out.println("100");
break;
default:
System.out.println("default代码块");
break;
}
7.2案列
输入年和月,输出当月的天数
分析:
1、3、5、7、8、10、12月:31天
4、6、9、11月:30天
2月:平年28天、闰年29天
判断闰年的标准:年份被4整除并且不能100整除 或者 年份被400整数
import java.util.Scanner;
public class Test07{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
int day = 0;//记录当月的天数
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
if(year%4==0 && year%100!=0 || year%400==0){
day = 29;
}else{
day = 28;
}
break;
}
System.out.println(year + "年" + month + "当月的天数为" + day + "天");
}
}
八、for循环
8.1语法结构应用场景:重复性的做某个功能
好处:减少代码的冗余
8.2理解for(表达式1;表达式2;表达式3){
...代码块/循环体...
}
8.3执行步骤表达式1 - 初始化变量
表达式2 - 判断条件(结果必须是boolean,true就执行代码块,false就跳出循环)
表达式3 - 更新变量
8.4做实验1.初始化变量
2.判断条件(结果必须是boolean)
2.1 true -- 执行代码块,更新变量,再重复执行第2步
2.2 fasle - 跳出循环
使用for循环输出5遍 -- "用良心做教育,做真实的自己"
for(int i = 0;i<5;i++){
System.out.println("用良心做教育,做真实的自己");
}
8.5for变形记
8.6需求int i = 0;
for(;i<5;){
System.out.println("用良心做教育,做真实的自己");
//i++和++i作用在更新变量时,没有区别
//i++;
++i;
}
System.out.println(i);//5
需求1:输出1~10的数字
for(int i = 1;i<=10;i++){
System.out.println(i);
}
需求2:输出1~10的奇数数字
for(int i = 1;i<=10;i+=2){
System.out.println(i);
}
需求3:输出10~1的数字
for(int i = 10;i>0;i--){
System.out.println(i);
}
需求4:输出10~1的偶数数字
for(int i = 10;i>0;i-=2){
System.out.println(i);
}
注: 死循环:
for(;;){
System.out.println("用良心做教育,做真实的自己");
}
注://伪死循环(int类型取值范围是有边际)
for(int i = 1;i>0;i++){
System.out.println("用良心做教育,做真实的自己");
}
8.6注意
8.7案列1.for循环中声明的变量作用域在整个循环中(循环外没有用)
2.i++和++i作用在更新变量时,没有区别
3.初始化变量不一定从0开始
4.更新变量不一定每次都++
5.尽量不要使用死循环
案例1:循环录入5次int类型的数字,输出总和
Scanner scan = new Scanner(System.in);
int sum = 0;//总和
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
sum += num;//累加总和
}
System.out.println("总和为:" + sum);
案例2:循环录入麻生希同学的5门课成绩,计算平均分
Scanner scan = new Scanner(System.in);
double sum = 0;//总分
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "门成绩:");
double num = scan.nextDouble();
sum += num;//累加总和
}
//计算平均分
double avg = sum/5;
System.out.println("平均分为:" + avg);
案例3:循环录入5次int类型的数字,输出最大值
Scanner scan = new Scanner(System.in);
//假设第一个数字就是最大值
System.out.println("请输入第1个数字:");
int max = scan.nextInt();
for(int i = 2;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
//如果输入的数字比max大,就把输入的数字赋值给max
if(max < num){
max = num;
}
}
System.out.println("最大值为:" + max);



