流程控制
- 流程控制语句分类
- 顺序结构
- 分支结构 (if ,switch)
- 循环结构 (for,while,do…while)
顺序结构
-
顺序结构定义
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。 -
代码测试 :
public class Demo_1 {
public static void main(String[] args) {
System.out.println("开始");
System.out.println("语句 A");
System.out.println("语句 B");
System.out.println("语句 C");
System.out.println("结束");
}
}
if 语句格式一
格式 :
if(关系表达式){
语句体 ;
}
执行流程 :
1.首先计算关系表达式的值
2.如果关系表达式的值为 true 就执行语句体
3.如果关系表达式的值为 false 就不执行语句体
4.继续执行后面的语句内容
- 代码测试 :
/**
* if 语句格式一
* 需求 :判断 a 和 b 的值是否 相等,如果相等,就在控制台输出:a 等于 b
**/
// 定义两个 int 类型的变量。
// a 不等于 b
int a = 10;
int b = 20;
if (a == b) {
System.out.println("a 等于 b");
}
System.out.println("结束");
System.out.println("=====================");
// a 等于 b
b = 10;
if (a == b) {
System.out.println("a 等于 b");
}
System.out.println("结束");
if 语句格式二
格式 :
if(关系表达式){
语句体一;
}else{
语句体二;
}
执行流程 :
1.首先计算关系表达式的值
2.如果关系表达式的值为 true 就执行语句体一
3.如果关系表达式的值为 false 就执行语句体二
4.继续执行后边的语句内容
- 代码测试 :
/**
* if 语句格式二
* 需求: 判断 a 和 b 的值是否相等
* 如果相等,就在控制台输出:a 等于 b ;
* 如果不等,就在控制台输出:a 不等于 b ;
**/
// 定义两个 int 类型的变量。
// a 不等于 b
int a = 10;
int b = 20;
if (a == b) {
System.out.println("a 等于 b");
} else {
System.out.println("a 不等于 b");
}
System.out.println("结束");
System.out.println("==========================");
// a 等于 b
b = 10;
if (a == b) {
System.out.println("a 等于 b");
} else {
System.out.println("a 不等于 b");
}
System.out.println("结束");
- 案例 :奇偶数
//1.导入 Java.util 包
import java.util.Scanner;
public class Demo_1 {
public static void main(String[] args) {
/**
* 需求 :任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
**/
// 2.new 一个 Scanner 对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数 :");
// 3.定义一个 int 类型的变量来接受控制台输入
int number = scanner.nextInt();
// 4.使用分支结构 if...else 对输入的值进行判断,值为 true 输出偶数,值为 false 输出奇数
if (number % 2 == 0) {
System.out.println(number + "是偶数");
} else {
System.out.println(number + "是奇数");
}
}
}
if 语句格式三
格式 :
if(关系表达式一){
语句体一;
}else if(关系表达式二){
语句体二;
}
...
else {
语句体 n+1;
}
执行流程 :
1. 首先计算关系表达式一的值
2. 如果值为 true 就执行语句体一,如果值为 false 就计算关系表达式二的值
3. 如果值为 true 就执行语句体二,如果值为 false 就计算关系表达式三的值
4. ...
5. 如果没有任何关系表达式值为 true,就执行语句体 n+1
- 代码测试 :
// 1. 导入 Java.util 包
import java.util.Scanner;
public class Demo_1 {
public static void main(String[] args) {
/**
* 需求 :键盘录入一个星期数(1,2,3, ... 7),输出对应的星期一,星期二,星期三, ... 星期日
**/
// 2. new 一个 Scanner 对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个星期数(1-7) :");
// 3.定义一个 int 类型的变量接收控制台输入的值
int week = scanner.nextInt();
// 4.使用 if ... else if ... else 对输入的值进行判断,输出值对应的结果
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 if (week == 7) {
System.out.println("星期日 !");
} else {
System.out.println("输入值无法进行判断,程序无法执行 !");
}
}
}
- 案例 :考试奖励
// 1.导入 java.util包
import java.util.Scanner;
public class Demo_1 {
public static void main(String[] args) {
/**
* 需求 :小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物, 假如你可以控制小明的得分
* 请用程序实现小明到底该获得什么样的礼物,并在控制台输出
* 100 ~ 95分,山地自行车一辆
* 94 ~ 90分,游乐场玩一次
* 89 ~ 80分,变形金刚玩具一个
* 80分以下,胖揍一顿
**/
// 2.new 一个 Scanner 对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入小明的考试成绩:");
// 3.定义变量,用来接收控制台输入。
int score = scanner.nextInt();
// 4.使用 if ... else if ... else 来进行判断
if (score >= 95 && score <= 100) {
System.out.println("山地自行车一辆!");
} else if (score >= 90 && score < 95) {
System.out.println("游乐场玩一次!");
} else if (score >= 80 && score < 90) {
System.out.println("变形金刚玩具一个!");
} else if (score >= 0 && score < 80) {
System.out.println("胖揍一顿!");
} else {
System.out.println("数值不在有效范围内无法判断!");
}
// 数据测试 : 正确数据,边界数据,错误数据
}
}
switch 语句
-
switch 语句格式
格式 : switch(表达式){ case 值一: 语句体; break; case 值二: 语句体; break; ... default: 语句体n+1; [break;] } 格式说明: 1.表达式: 取值为 byte,short,int,char, JDK5以后可以是枚举,JDK7以后可以是String 2.case: 后面跟的是要和表达式进行比较的值 3.break: 表示中断,结束的意思,用来结束 switch 语句 4.default: 表示所有情况都不匹配的时候,就执行该处的内容,和 if 语句的 else 相似 执行流程: 1.首先计算表达式的值 2.依次和 case 后边的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束 3.如果所有的 case 后面的值和表达式的值都不匹配,就会执行 default 里面的语句体,然后程序结束掉
-
代码测试 :
// 1.导入 java.util包
import java.util.Scanner;
public class Demo_1 {
public static void main(String[] args) {
/**
* 需求 :键盘录入一个星期数(1,2,3,...7),输出对应的星期一,星期二,星期三,...星期日
**/
// 2.新建一个 Scanner 对象
Scanner scanner = new Scanner(System.in);
// 3.提示键盘录入
System.out.println("请输入一个整数(1-7):");
// 4.定义 int 类型的变量用来接收键盘录入
int week = scanner.nextInt();
// 5.使用 switch 进行判断,输出对应的星期数
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;
}
}
}
-
案例 :春夏秋冬
注意事项 :在 switch 语句中,如果 case 控制的语句体后面不写 break,将出现穿透现象,在不判断下一个 case 值的情况下, 向下运行,直到遇到 break,或者整体 switch 语句结束
// 1.导入 java.util包
import java.util.Scanner;
public class Demo_1 {
public static void main(String[] args) {
/**
* 需求 :一年有十二个月份,分属于春夏秋冬四个季节,请用程序实现判断该月份属于哪个季节,并输出
**/
// 2.新建一个 Scanner 对象
Scanner scanner = new Scanner(System.in);
// 3.提示键盘录入
System.out.println("请输入要判断的月份:");
// 4.定义 int 类型的变量用来接收键盘录入
int month = scanner.nextInt();
// 5.使用 switch 进行判断,输出对应的季节
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
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;
default:
System.out.println("输入错误,程序结束");
}
}
}