分支结构(if/else,switch选择判断)
Posted zitian246
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分支结构(if/else,switch选择判断)相关的知识,希望对你有一定的参考价值。
Note:switch中支持的类型为byte,short,int,char,String(JDK7+),枚举共6种,不支持浮点型
1.if结构
if:如果
格式:
if(布尔表达式){
//条件成立逻辑代码块
}
import java.util.Scanner; public class Test5{ public static void main(String [] args){ // 赵四两门成绩 java成绩 音乐成绩 // 如果java成绩大于85 并且 音乐成绩 大于75 奖励苹果8袋 // 或者 // 如果java成绩等于100 并且 音乐成绩 大于 65 奖励苹果8袋 Scanner input = new Scanner(System.in); System.out.println("请输入你的java成绩"); int javaScore = input.nextInt(); System.out.println("请输入你的音乐成绩"); int musicScore = input.nextInt(); if((javaScore > 85 && musicScore > 75) || (javaScore == 100 && musicScore > 65)){ System.out.println("奖励苹果8袋"); } // 在程序结束之前 判断当前是否获得奖励 System.out.println("程序结束"); } }
2.if - else
else : 否则
要求:else不能单独出现,必须结合if或者其他的选择结构
格式:
if(布尔表达式){
//条件成立执行的逻辑代码
}else{
//以上条件不成立的其他任何情况都会执行的代码
}
package com.qfedu.test1; ? import java.util.Scanner; ? public class Test2 { public static void main(String[] args) { // if -else // else:否则 不能单独出现 必须结合 if 或者其他的选择结构 // 单行注释快捷键 选中需要被注释的代码 ctrl + / 取消注释 也是一样的操作 // ctrl + d删除选中内容 // if(布尔类型的表达式) { // // }else { // // } Scanner input = new Scanner(System.in); System.out.println("请输入你的java成绩"); int javaScore = input.nextInt(); System.out.println("请输入你的音乐成绩"); int musicScore = input.nextInt(); if((javaScore == 100 && musicScore > 65) || (javaScore >= 85 && musicScore >= 75)) { System.out.println("奖励苹果8袋"); }else { System.out.println("继续努力"); } } }
3.多重if
适用场景:多重if用于处理某个值处于某个连续的区间的情况
else - if不能单独出现,必须结合if
多重if中的else - if没有上限,写多少都可以
多重if中的else可写可不写,根据需求是否书写
package com.qfedu.test1; ? import java.util.Scanner; ? public class Test4 { public static void main(String[] args) { // 根据成绩评定等级 // >= 90 优秀 // >= 80 良好 // >= 70 中等 // >= 60 及格 // < 60 差 // 以上需求我们可以使用多重if来实现 // 多重if通常用于处理某个值处于某个连续的区间的情况 // 多重if编写条件必须是有顺序的 升序 或者 降序 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("继续努力"); } } }
4.嵌套if
概念:if选择结构中继续嵌套if选择结构,if、if - else、多重if之间可以互相嵌套,没有上限
适用场景:通常用于处理某些关联关系的条件情况,例如先符合条件A,才有机会符合条件B
package com.qfedu.test1; ? import java.util.Scanner; ? public class Test6 { public static void main(String[] args) { // 举行百米跑步比赛 跑步时间小于 10 秒的话 进入决赛 // 根据性别分别进入 男子组 或者 女子组 // 需求改进 // 为了公平比赛 男生 要求10秒可以进入决赛 女生12秒可以进入决赛 Scanner input = new Scanner(System.in); System.out.println("请输入你的跑步时间"); double time = input.nextDouble(); System.out.println("请输入你的性别"); String sex = input.next(); // if(time < 10) { // // 男生 // if(sex.equals("男")) { // System.out.println("恭喜你进入男子组"); // } // }else if(time < 12) { // if(sex.equals("女")) { // System.out.println("恭喜你进入女子组"); // } // } ? // if((time < 10 && sex.equals("男"))) { // System.out.println("恭喜进入男子组"); // // } else if (time < 12 && sex.equals("女")) { // System.out.println("恭喜进入女子组"); // } if(sex.equals("男")) { if(time < 10) { System.out.println("恭喜进入男子组"); } }else if(sex.equals("女")){ if(time < 12) { // alt + 方向键 上下键 System.out.println("恭喜进入女子组"); } } } }
5.switch结构
switch : 开关
case:情况
break:打破、折断
default:默认
格式:
switch(变量|表达式){
case 值1:
逻辑代码1;
case 值2:
逻辑代码2;
case 值n:
逻辑代码n;
default:
未满足时的逻辑代码; }
使用场景:switch通常用于处理等值的情况
类型要求:支持的数据类型:
byte,short,int,char,String(JDK7+),枚举
package com.qfedu.test1; ? import java.util.Scanner; ? public class Test7 { public static void main(String[] args) { // switch // 支持的数据类型 byte short int char String(JDK7+) 枚举 // 需求:学校举行尬舞比赛 // 一等奖 夏令营1天 // 二等奖 夏令营1天 // 三等奖 夏令营1天 // 四等奖 夏令营1天 ? Scanner input = new Scanner(System.in); System.out.println("请输入你的名次"); int num = input.nextInt(); // if(num == 1) { // System.out.println("夏令营1天"); // }else if (num == 2) { // System.out.println("优盘1个"); // }else if(num == 3) { // System.out.println("笔记本1个"); // }else if(num == 4){ // System.out.println("口头表扬一次"); // } ? // switch(num) { // case 1: // System.out.println("夏令营1天"); // break; // case 2: // System.out.println("优盘1个"); // break; // case 3: // System.out.println("笔记本1个"); // break; // case 4: // System.out.println("口头表扬一次"); // break; // } // switch(num) { case 1: case 2: case 3: case 4: System.out.println("夏令营1天"); // break也不是必须存在的 根据需求是否书写 不书写的效果将一直执行到书写break的case停止 // case块书写上break 表示执行 完当前case块代码跳出当前case块 break; // default不是必须存在的 根据需求 // 位置也不是固定的 但是要求必须写在最后 // default也要加上break default: System.out.println("继续努力"); break; } } }
6.局部变量
概念:声明在函数内部的变量
要求:
1.必须先赋值才能使用
2.定义位置:定义在方法体内部
3.多个变量,在重合的作用范围内,不能出现重名(命名冲突)
4.作用范围:在定义的代码块以内可以访问
5.存放的位置:局部变量存在栈中
6.生命周期:随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡
package com.qfedu.test1; // int a = 20; 不能定义在类以外 public class Test9 { // int s = 20; 在这里定义可以编译通过 但是不是局部变量(全局变量) public static void main(String[] args) { int a; int b = 10; System.out.println(b); // System.out.println(a); 局部变量 必须先赋值 才能使用 if(b > 5) { int c = 20; System.out.println(c); // System.out.println(d); 不能访问d 因为超出范围 并且 d在后续的代码中定义 不能提前访问 if(b > 6) { int d = 20; System.out.println(c); } // System.out.println(d); // 超出范围 } // System.out.println(c); 超出范围 } }
以上是关于分支结构(if/else,switch选择判断)的主要内容,如果未能解决你的问题,请参考以下文章