流程控制
流程控制语句概述
在一个程序的执行过程中,各条语句的执行顺序对程序的执行结果是有直接影响的。所以我们必须清楚的知道每条语句的执行流程。并且很多时候我们通过流程控制语句来控制语句的执行流程。
最常见的流程就是之前写的很多的顺序流程。
流程控制语句分类
- 顺序结构
- 分支结构(if、switch)
- 循环结构(for、while、do…while)
顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序依次进行。
程序中大多代码都是这样执行的。
测试代码:
/*
顺序结构
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
//顺序开始
System.out.println("开始");
System.out.println("语句1");
System.out.println("语句2");
System.out.println("语句3");
System.out.println("结束");
}
}
运行结果:
顺序结构的流程图:
if语句
if语句格式1
if(关系表达式){
语句1;
}
语句2;
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true则执行语句1
- 如果关系表达式的值为false则不执行语句1
- 顺序执行语句2
测试代码:
/*
if语句格式1
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
System.out.println("开始");
int i = 10;
int j = 20;
if(i==j){
System.out.println("i和j相等!");
}
if(i!=j){
System.out.println("i和j不相等!");
}
System.out.println("结束");
}
}
输出结果:
if语句格式1的流程图:
if语句格式2
格式:
if(关系表达式){
语句1;
}else{
语句2;
}
语句3;
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句1
- 如果关系表达式的值为false就执行语句2
- 继续执行语句3
改造测试代码:
/*
if语句格式2
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
System.out.println("开始");
int i = 10;
int j = 20;
if(i==j){
System.out.println("i和j相等!");
}else{
System.out.println("i和j不相等!");
}
System.out.println("结束");
}
}
运行结果:
if语句格式2的流程图:
案例测试
任意给出一个整数,采用键盘录入一个数据,判断其是奇数还是偶数。
代码:
/*
if语句格式2案例测试
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数!");
int number = scan.nextInt();
if(number%2 == 0){
System.out.println("该数为偶数!");
}else{
System.out.println("该数为奇数!");
}
}
}
运行结果:
if语句格式3
格式:
if(关系表达式1){
语句1;
}else if(关系表达式2){
语句2;
}else{
语句3;
}
语句4;
执行流程:
- 首先计算关系表达式1的值
- 如果值为true则执行语句1;如果为false则计算关系表达式2的值
- 如果值为true则执行语句2;如果为false则执行语句三
- 执行语句4
测试代码:
/*
if语句格式3 计算星期几
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数!");
int number = scan.nextInt();
if(number == 1){
System.out.println("今天是周一!");
}else if(number == 2){
System.out.println("今天是周二!");
}else if(number == 3){
System.out.println("今天是周三!");
}else if(number == 4){
System.out.println("今天是周四!");
}else if(number == 5){
System.out.println("今天是周五!");
}else if(number == 6){
System.out.println("今天是周六!");
}else if(number == 7){
System.out.println("今天是周日!");
}else{
System.out.println("数字不准确!");
}
}
}
运行结果:
switch语句
switch语句格式
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n;
[break;]
}
格式说明:
- 表达式:取值为byte、short、int、char、JDK5以后可以是枚举,JDK7以后可以是String。
- case:后面跟的是要和表达式进行比较的值。
- break:表示中断,结束的意思,用来结束switch语句。
- default:标识所有情况都不匹配的时候,就执行该处的内容。
执行流程:
- 首先计算表达式的值。
- 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 如果所有的case后面的值都不匹配,就会执行default里面的语句,然后程序结束掉。
测试代码:
/*
switch 计算星期几
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数!");
int number = scan.nextInt();
switch(number){
case 1:
System.out.println("周一");
case 2:
System.out.println("周二");
case 3:
System.out.println("周三");
case 4:
System.out.println("周四");
case 5:
System.out.println("周五");
case 6:
System.out.println("周六");
case 7:
System.out.println("周日");
default:
System.out.println("数据错误!");
}
}
}
运行结果:
如果不写break,他会顺序执行后面所有的语句。
修改测试代码:
/*
switch 计算星期几
*/
import java.util.Scanner;
public class OperatorDemo04{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数!");
int number = scan.nextInt();
switch(number){
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("数据错误!");
}
}
}
运行结果: