简单来讲所谓流程就是完成一件事情的多个步骤组合起来就叫做一个流程。在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 流程控制语句分为:顺序结构 丶分支结构(if, switch) 丶循环结构(for, while, do…while)。下面我们来详细学习一下吧
任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。
代码示例
public class Demo01Sequence { public static void main(String[] args) { //1.顺序结构: 按照代码的书写顺序,从上而下依次执行 System.out.println("开始....."); System.out.println("A"); System.out.println("B"); System.out.println("C"); System.out.println("结束...."); } }
分支结构用于实现根据条件来选择性地执行某段代码。在Java语句中包括if和switch2种语句。
代码示例
package sgg.demo01; /* 案例:从键盘输入年份,请输出该年的2月份的总天数。闰年2月份29天,平年28天。 闰年: (1)能被4整除,不能被100整除 或者 能被400整除 */ public class Demo01 { public static void main(String[] args) { java.util.Scanner input = new java.util.Scanner(System.in); System.out.print("请输入年份:"); int year = input.nextInt(); int days = 28; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { days++; } System.out.println(year + "年的2月份共" + days + "天"); } }
代码示例
package sgg.demo01; public class Demo02 { public static void main(String[] args) { int a = 10; int b = 20; //定义变量,保存a和b的较大值 int max; if(a > b) { max = a; } else { max = b; } System.out.println(max); //可以上述功能改写为三元运算符形式 max = a > b ? a : b; System.out.println(max); } }
注意事项:
执行流程
执行流程图
代码演示
import java.util.Scanner; /* 需求: 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物, 假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 奖励规则: 95~100 山地自行车一辆 包含95和100的 数学中表示方式: [95,100] 不包含95和100: (95,100) 90~94 游乐场玩一次 包含90和94的 80~89 变形金刚玩具一个 包含80和89的 80以下 胖揍一顿 不包含80分的 */ public class Demo03{ public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取一个0-100之间的整数数字(代表小明的考试成绩),保存到int变量score中 System.out.println("请输入一个0-100之间的整数数字(代表小明的考试成绩): "); int score = sc.nextInt(); //3.因为score中的数字有多种(大于3)情况,所以使用if语句的第三种格式进行判断,并输出不同的结果内容 if (score >= 95 && score <= 100) { System.out.println("奖励山地自行车一辆"); } else if (score >= 90 && score <= 94) { System.out.println("奖励游乐场玩一次"); } else if (score >= 80 && score <= 89) { System.out.println("奖励变形金刚玩具一个"); } else if (score >= 0 && score < 80) { System.out.println("奖励胖揍一顿"); } else { //隐藏条件: score<0 || score>100 System.out.println("您输入的成绩错误,是火星来的吧,哥屋恩..."); } System.out.println("main....end....");//模拟格式中的其它语句 } }
注意事项
执行的特点:
代码示例
package sgg.demo01; import java.util.Scanner; //从键盘输入一个年份,和月份,输出该年份该月的总天数 public class Demo04 { public static void main(String[] args) { //从键盘输入一个年份,和月份 Scanner input = new Scanner(System.in); System.out.print("年份:"); int year = input.nextInt(); System.out.print("月份:"); int month = input.nextInt(); if (year > 0) { if (month >= 1 && month <= 12) { //全部合法的情况 int days; if (month == 2) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { days = 29; } else { days = 28; } } else if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } else { days = 31; } System.out.println(year + "年" + month + "月有" + days + "天"); } else { //年份合法,月份不合法的情况 System.out.println("月份输入不合法"); } } else { //年份不合法的情况 System.out.println("年份输入不合法"); } } }
执行流程:
代码演示
package demo03; public class SwitchDemo01 { public static void main(String[] args) { //定义指定的星期 int weekday = 5; //switch语句实现选择 switch (weekday) { 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语句结束,switch语句执行终止。
执行步骤:
代码示例
import java.util.Scanner; /* 需求: 一年有12个月,分属于春夏秋冬4个季节, 键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。 演示效果 输入: 1、2、12 输出:冬季 输入: 3、4、5 输出:春季 输入: 6、7、8 输出:夏季 输入: 9、10、11 输出:秋季 输入: 其它数字 输出:数字有误 */ public class SwitchDemo02 { public static void main(String[] args) { //1.创建键盘录入Scanner类的对象 Scanner sc = new Scanner(System.in); //2.获取键盘录入的一个1-12的整数数字(代表月份),保存到int变量month中 System.out.println("请输入一个1-12的整数数字(代表月份): "); int month = sc.nextInt(); //3.因为month中的数字有12+1中情况,使用switch语句对month中的值,进行判断,并输出不同的结果 switch (month) {//9 case 1: case 2: case 12: 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("您输入的月份不存在,哪个星球来的,哥屋恩..."); break; } System.out.println("main....end....");//模拟格式中的其它语句 } }