1、选择语句?
1.1、if 语句?
语法: if(条件表达式){ if 执行体}
if( ){ }
{ } 的内容只有一句时,大括号可以省略不写
条件表达式: 结果是boolean类型字面值
if 执行体:main方法可以写的内容,if 执行体都可以写
(1.变量 2.输出语句 3.流程控制语句)
理解: 条件表达式成立,if 执行体执行,条件表达式不成立,不执行 if 执行体。
if 语句流程图:
案例:考试成绩及格,爸爸带我去游乐场!
代码实现:
public class IfExample {
public static void main(String[] args) {
double score =80;
if(score>=60) {
System.out.println("爸爸带我去游乐场");
}
}
}
运行结果:
注意问题:
①语法问题
if() 后面没有分号,如果写了分号不报错!②省略大括号,只限于大括号内只有一句!
③局部变量的作用域
省略大括号的前提条件是只能是一句,但是这句不能是定义的一个局部变量,因为,{ }作用是定义这个局部变量的作用域!
1.2、if-else语句?
- 语法: if (条件表达式) {if体} else {else体}
if ( ) { } else { }
理解: 如果条件表达式成立,执行 if 体,否则,执行else体
if-else要么执行 if 体要么执行else体,一定会执行一个!
if-else 流程图
案例:如果考试成绩及格,爸爸带我去游乐场,否则爸爸揍我一顿!
代码实现:
public class IfElseExample {
public static void main(String[] args) {
double score = 50;
if (score >= 60) {
System.out.println("爸爸带我去游乐场");
}else{
System.out.println("爸爸揍我一顿");
}
}
}
运行结果:
练习:判断一个年份是否是闰年,闰年的条件是符合下面二者之一
(1) 年份能被 4 整除,但不能被 100 整除;
(2) 能被 400
代码实现:
//思路:
//1. 定义 int year 保存年份
//2. 年份能被 4 整除,但不能被 100 整除 => year % 4 == 0 && year % 100 != 0
//3. 能被 400 整除 => year % 400 == 0
public class LeapYear {
public static void main(String[] args) {
int year = 2020;
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
System.out.println("闰年");
} else {
System.out.println("普通年份");
}
}
}
运行结果:
1.3、if-else-if多分支语句?
- 语法: if (条件1) { 执行体1 }
else if (条件2) { 执行体2 }
else if (条件3) { 执行体3 }
…
else { else 执行体 }
理解: 条件1如果成立,执行体1,程序结束
条件1如果不成立,判断条件2,条件2如果成立,执行条件2,程序结束
如果条件2还不成立,继续判断条件3…
以上所有的条件都不成立,执行else体
注意问题: 无论是怎么执行,都必须执行一个执行体,也只能执行一个执行体!
if-else-if 流程图
案例:小张在系统输入考试成绩,让系统告诉他,他的等级是什么?
90~100 优秀!
80~90 良好!
70~80 中等!
60~70 及格!
60以下 不及格!
代码实现:
import java.util.Scanner;
public class IfElseIfExample {
public static void main(String[] args) {
//1.创建Scanner类的对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入成绩
System.out.println("请输入考试成绩");
//3.获取用户输入的成绩
double score = sc.nextDouble();
//4.判断成绩等级
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("不及格");
}
}
}
输入不同成绩,代码运行结果如下:
运行结果完全没有问题,证明这个语句是正确的。
1.4、if 嵌套语句?
语法:
if( ) { if( ) { // if-else ... } else { // if-else } }
理解: 在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。
建议: 嵌套不要超过 3 层,因为可读性不好。
if(外分支){
// 外为 true 时执行的代码
if(内分支){
// 内为 true 时执行的代码
}
}
案例:人的年龄大于或等于18岁时为未成年人
代码实现:
public class NestedIfExample {
public static void main(String[] args) {
int age = 20;
boolean Maiores = true;
if (age >= 18){
if (Maiores){
System.out.println("成年人");
}
}
}
}
运行结果:
1.5、switch 语句?
语法:
switch(字面值) { case 字面值1: 语句1... break; case 字面值2: 语句2... break; case 字面值3: 语句3... break; ... default: 语句... }
关键字翻译:
switch 开关
case 一种情况,一种可能
break 结束swtich语句
default 默认的,以上所有的情况都不执行时,执行default语句
理解: switch的字面值和case字面值进行比对,如果跟那一个case的字面值相同就执行哪一个case语句,如果都不相同,执行default的语句。
注意: 每一个case的值不能是相同的!
案例:用户在控制台输入1到5,程序输出相应的日计划!
例如,用户输入1, 系统:周一,写代码!
代码实现:
/*日计划:
周一 --------- 写代码
周二 --------- 约会
周三 --------- 看电影
周四 --------- 爬山
周五 --------- 游泳
*/
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//1.创建Scanner类的对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入1到5
System.out.println("请输入数字1—5,分别表示周一到周五,
看看自己的日计划是什么?");
//3.获取用户输入的1到5
int i = sc.nextInt();
//4.使用switch语句判断
switch(i){
case 1:
System.out.println("周一写代码");
break;
case 2:
System.out.println("周二约会");
break;
case 3:
System.out.println("周三看电影");
break;
case 4:
System.out.println("周四爬山");
break;
case 5:
System.out.println("周五游泳");
break;
default:
System.out.println("你输入的不是周一到周五");
}
}
}
运行结果:
注意问题:
1.case穿透问题
原因:没有写break ,执行后System.out.println( )的 内容会全部输出
2.case并列问题
case可以并列,注意case的值不要相同,case 字面值 后用’ : ’ (英文冒号)隔开
案例:控制台输入月份,系统显示季节!
例如:5 系统:春天!
春天---------3 4 5
夏天---------6 7 8
秋天---------9 10 11
冬天---------12 1 2
代码实现:
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//1.创建Scanner类的对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入一个月份
System.out.println("请输入月份:");
//3.获取用户输入的月份
int month = sc.nextInt();
//4.switch判断
switch (month){
//用户输入的月份是3 或4或 5都执行春天!
case 3: case 4: case 5:
System.out.println("春天!");
break;
case 6: case 7: case 8:
System.out.println("夏天!");
break;
case 9: case 10: case 11:
System.out.println("秋天!");
break;
case 12: case 1: case 2:
System.out.println("冬天!");
break;
default:
System.out.println("你输入是月份不存在!");
}
}
}
运行结果:
3.switch版本问题
jdk1.8 (8.0)版本支持的数据类型?
required: “ char, byte, short, int, Character, Byte, Short, Integer, String, or an enum ”
不支持 long类型,double类型,boolean类型
jdk1.7(7.0)之前都不支持String字符串
选择语句就这些内容了,如果发现错误欢迎小伙伴们在评论区指正,感谢阅读。