一、复杂的if分支
案例1:
人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)
分析:1.输入身高体重
2.计算出健康值
3.判断
实现代码如下:
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("小护士说:\"健康,请保持身材。。。。\"");
案例2:
小西满里惠Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
分析:
1.输入成绩
2.判断
总结:if可以判断一个区间 或者 复杂的逻辑判断
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("奖励小西满里惠吃小龙虾")
}
二、if…else
1.语法
if(表达式){
…代码块…
}else{
…else代码块…
}
2.理解:
表达式的结果只能是boolean类型
true-执行代码块
false-执行else代码块
3.实验:
if(false){
System.out.println("…代码块…")
}else{
System.out.println("…else代码块…");
}
System.out.println(“if分支以外的代码”);
4.案例
如果椎名空Java考试成绩大于98分,老师就奖励他一个劳斯莱斯,
否则老师就罚他进行编码
代码实现:
Scanner scan=new Scanner(System.in);
System.out.println("请输入Java考试成绩:");
double javaScore = scan.nextDouble();
if(javaScore > 98){
System.out.println("奖励椎名空劳斯莱斯");
}else{
System.out.println("给椎名空通宵补课");
}
三、多重if分支
1.语法
语法:
if(表达式1){
。。。代码块1.。。
}else if{
。。。代码块2.。。
}else if{
。。。代码块n.。。
}
2.理解:
从上往下依次判断表达式,哪个表达式先为true,就执行对应的代码块
如果所有的表达式都为false,就执行else代码块
注意:else{}根据需求可以写可以不写,语法层面不会出错
3.实验:
if(false){
System.out.println("...代码块1...");
}else if(false){
System.out.println("...代码块2...");
}else if(false){
System.out.println("...代码块3...");
}else if(false){
System.out.println("...代码块4...");
}else{
System.out.println("...else代码块...");
}
4.案例:
案例一:
人类的健康值在15-20的数值内为偏瘦
20-25的数值内为健康
25-30的数值内为偏胖
(健康值算法为:体重(Kg) / 身高(米)的平方)
分析:1先录入身高和体重
2.对健康值进行运算
3.得出结果
代码实现:
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”
否则打印“E”
分析:1.先录入成绩
2.判断成绩所属范围
3.输出成绩等级
实现原码如下:
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需要多选一些流程
四、多重嵌套if语句
案例:
公司举行运动会,百米赛跑抛入16s以内的学生有资格参加决赛,根据性别分为男子组、女子组。
分析:
1.首先需要分析成绩是否在16s以内
2.在16s以内的同学中 判断选手的性别
3.输出结果
代码实现:
Scanner scan=new Scanner(System.in);
System.out.println("请输入您的比赛成绩(单位s):");
double s = scan.nextDouble();
if(s>=0&&s<16){
System.out.println("请输入您的性别:男---1 女 -- 2");
int sex = scan.nextInt();
if(sex==1){
System.out.println("恭喜您进入男子组决赛");
}else if(sex==2){
System.out.println("恭喜您进入女子组决赛");
}else{
System.out.println("sex error");
}
}else if(s>=16){
System.out.print("谢谢参与");
}else{
System.out.println("data error");
}
五、switch分支
1.语法结构
switch(表达式){
case 值1:
…代码块1…
break;
case 值2:
…代码块2…
break;
case 值n:
…代码块n…
break;
default:
…default代码块…
break;
}
2.理解
表达式计算出来最终的结果值,分别于值1、值2、值n比较,谁相同,就执行对应的代码块
如果都不相同,就执行default代码块,default代码块可写可不写,类似于else{}
break:跳出整个分支语句
3.实验
switch(1000){
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;
}
4.案例
水菜丽参加计算机编程大赛
如果获得第一名,将参加公司组织的1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,何老师晚上给水菜丽通宵补课
代码实现:
Scanner scan = new Scanner(System.in);
System.out.println("请输入水菜丽同学的比赛名次:");
String str = scan next(); //输入字符串的表达式
switch(str){
case"第一名":
System.out.println("参加马尔代夫一月游");
break;
case"第二名":
System.out.println("奖励苹果pro一台");
break;
case"第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("通宵补课");
break;
}
六、深入switch分支
1.switch表达式的值的类型
switch表达式的值可以是byte、short、int、char、枚举(JDK1.5)、String(JDK1.7)
2.case后面接的值不能一样
3.case后面的接的值能一样,但是必须兼容(char ,int)
4.break可以不要 类似else
5.default代码块可以写在中间位置
6default代码块可以省略
案例:
输入年和月,输出当月的天数
分析:1、3、5、7、8、10、12有31天4、6、9、11有30天。
每年的2月,闰年为29天,平年为28天,能被400整除或者能被4整除但不能被100整除的年份即为闰年
代码实现:
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%400==0||year%4==0&&year%100!=0){
day=29;
}else{
day=28;
}
break;
}
System.out.println(year+"年"+month+"月的天数为:"+day+"天");
3. if vs switch
表达式的区别:
if:表达式的结果只能是boolean类型
switch:表达式的结果可以是byte、short、int、char、枚举(JDK1.5)、String(JDK1.7)
应用场景区别:
if:判断区间 或 复杂的条件
switch:判断单个值的比较
七、for循环
1.语法:
语法:
for(表达式1;表达式2;表达式3){
…代码块…
}
2.理解:
表达式1:初始化变量
第一次运行for循环时才初始化变量
表达式2:判断条件
判断条件结果必须是boolean类型
true - 执行代码块
false- 跳出循环语句
表达式3:更新变量
3.运行步骤
1.初始化变量
2.判断条件
2.1 true - 执行代码块,再更新变量,重复第2个步骤
2.2 false- 跳出循环语句
4.实验
for(int i = 0;i<5;i++){
System.out.println(“小红真可爱…” + i);
}
5.注意
死循环:应该要避免的错误
代码如下:
for(;;){
System.out.println("小红真可爱...");
}
System.out.println("死循环以外");
1.for循环中声明的变量只能在for循环中使用
2.更新变量 i++ 和 ++i没有区别
3.更新变量不局限于++
6.for循环的变形
for循环的变形1:
int i = 0;
for(;i<5;i++){
System.out.println("小红真可爱..." + i);
}
System.out.println(i);
for循环的变形2:
for(int i = 0;i<5;){
System.out.println("小红真可爱..." + i);
i++;
}
for循环的变形3:
for(int i = 5;i>0;i--){
System.out.println("小红真可爱..." + i);
}
for(int i = 1;i<10;i+=2){
System.out.println("小红真可爱..." + i);
}
7.案例
案例一:循环录入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);
八、嵌套for循环
案例一:
打印三行四列的三角形:
实现代码如下:
for(int i=0;i<3;i++){
System.out.print("****");
}
//方法2:
for(int i = 0;i<3;i++){\\控制行数
for (int j=0;j<4;j++){\\控制列数
System.out.print("*");
}
System.out.println();
}
案例二:
打印三角形
for(int i=1;i<=5;i++){\\控制行数
for(int j=0;j<=i;j++){
System.out.print("*");
}
System.out.println();//换行
}