分支语句
1.流程控制
1.1 流程控制分类
- 顺序结构
- 分支结构(if,switch)
- 循环结构(for,while,do...while)
1.2 顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数代码都是这样执行的。
顺序结构执行流程图:
他是从上往下依次执行的。
代码示例:
package com.scxh.day01; public class Demo01Order { public static void main(String[] args) { System.out.println("开始"); System.out.println("语句A"); System.out.println("语句B"); System.out.println("语句C"); System.out.println("结束"); } }
运行结果:
2. if语句
2.1 if语句格式1
格式: if(关系表达式){ 语句体; }
执行流程:
① 首先计算关系表达式的值
② 如果关系表达式的值为true就执行语句体
③ 如果关系表达式的值为false就不执行语句体
④ 继续执行后面的语句内容
代码示例:
package com.scxh.day01; public class Demo01If { public static void main(String[] args) { System.out.println("开始"); //定义两个变量 int a = 10; int b = 20; //需求:判断a和b的值是否相等,如果相等,就在控制台输出:a 等于 b if(a == b){ System.out.println("a等于b"); } //需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于c int c = 10; if(a == c){ System.out.println("a等于c"); } System.out.println("结束"); } }
运行结果:
2.2 if语句格式2
格式: if(关系表达式){ 语句体1; }else{ 语句体2; }
执行流程:
①首先计算关系表达式的值
② 如果关系表达式的值为true就执行语句体1
③ 如果关系表达式的值为false就执行语句体2
④ 继续执行后面的语句内容
代码示例:
package com.scxh.day01; public class Demo02If { public static void main(String[] args) { System.out.println("开始"); //定义两个变量 int a = 10; int b = 20; //需求:判断a是否大于b,如果是,在控制台输出:a的值大于b;如果不是,在控制台输出:a的值不大于b if (a > b){ System.out.println("a的值大于b"); }else { System.out.println("a的值不大于b"); } System.out.println("结束"); } }
运行结果:
案例:奇偶数
需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。
分析:
① 为了体现任意给出一个整数,采用键盘录入一个数据,使用键盘录入功能需要包
import java.util.Scanner;
创建对象
Scanner sc = new Scanner(System.in);
接收数据
int number = sc.nextInt();
②判断整数是奇数还是偶数要分两种情况经行判断,所以使用if…else结构
if () { }else{ }
③判断是否偶数需要用取余运算符来实现该功能number%2 == 0
if(number % 2 == 0) { }else{ }
④根据判定情况,在控制台输出对应内容
if(number % 2 == 0){ System.out.println(number+"是偶数") }else{ System.out.println(number+"是奇数") }
代码示例:
package com.scxh.day01; import java.util.Scanner; public class Demo02If { public static void main(String[] args) { // 为了体现任意给出一个整数,采用键盘录入一个数据,使用键盘录入功能需要包 // 创建对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); // 接收数据 int number = sc.nextInt(); // 判断整数是奇数还是偶数要分两种情况经行判断,所以使用if…else结构 // 判断是否偶数需要用取余运算符来实现该功能number%2 == 0 // 根据判定情况,在控制台输出对应内容 if(number%2 == 0){ System.out.println(number + "是偶数"); }else { System.out.println(number + "是奇数"); } } }
输出结果:
2.3 if语句3
格式: if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; } … else{ 语句体n+1; }
执行流程:
①首先计算关系表达式1的值
② 如果值为true就执行语句体1;如果关系表达式的值为false就执行语句体2
③ 如果值为true就执行语句体2;如果关系表达式的值为false就执行语句体3
④ …
⑤如果没有任何关系表达式为true,就执行语句体n+1。
代码示例:
package com.scxh.day01; import java.util.Scanner; public class Demo03If { public static void main(String[] args) { System.out.println("开始"); //需求:键盘录入一个星期数(1,2,3,4,5,6,7),输出对应的星期一,星期二,星期三,……,星期日 Scanner sc = new Scanner(System.in); System.out.println("请输入一个星期数(1-7):"); int week = sc.nextInt(); if(week == 1){ System.out.println("星期一"); }else if(week == 2){ System.out.println("星期二"); }else if(week == 3){ System.out.println("星期三"); }else if(week == 4){ System.out.println("星期四"); }else if(week == 5){ System.out.println("星期五"); }else if(week == 6) { System.out.println("星期六"); }else{ System.out.println("星期日"); } System.out.println("结束"); } }
输出结果:
3.switch语句
3.1 switch语句格式
格式: switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; [break;] }
格式说明:
- 表达式:取值为byte、short、int、char、JDK5以后可以是枚举,JDK7以后可以是String.
- case:后面跟的是要和表达式进行比较的值。
- break:表示中断,结束的意思,用来结束switch语句,
- default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
① 首先计算表达式的值。
② 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
③ 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束掉程序。’
代码示例:
package com.scxh.day01; import java.util.Scanner; public class Demo01Switch { public static void main(String[] args) { System.out.println("开始"); //需求:键盘录入一个星期数(1,2,3,4,5,6,7),输出对应的星期一,星期二,星期三,……,星期日 Scanner sc = new Scanner(System.in); System.out.println("请输入一个星期数(1-7):"); int week = sc.nextInt(); switch (week){ 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; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("你输入的星期数有误"); break; } System.out.println("结束"); } }
运行结果:
注意事项:在switch语句当中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体switch语句结束。
代码示例:
package com.scxh.day01; import java.util.Scanner; public class Demo01Switch { public static void main(String[] args) { System.out.println("开始"); //需求:键盘录入一个星期数(1,2,3,4,5,6,7),输出对应的星期一,星期二,星期三,……,星期日 Scanner sc = new Scanner(System.in); System.out.println("请输入一个月份:"); int month = sc.nextInt(); //case穿透 switch (month){ case 1: case 2: case 12: 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 3: case 4: case 5: System.out.println("春季"); break; default: System.out.println("你输入的月份有误"); break; } System.out.println("结束"); } }
运行结果: