流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。
流程控制语句分类
顺序结构、分支结构(if\switch)、循环结构(for\while\do…while)
顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数代码都是这样执行的。
顺序结构执行流程图:
分支结构:if 语句
if语句格式1:
if(关系表达式){
语句体;
}
执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体
3、如果关系表达式的值为false就不执行语句体
4、继续执行后面的语句内容
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");
}
}
if语句格式2:
if(关系表达式){
语句体1;
} else {
语句体2;
}
执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体1
3、如果关系表达式的值为false就执行语句体2
4、继续执行后面的语句内容
public class ifElseSwitch {
public static void main(String[] args) {
System.out.println("开始");
//定义两个变量
int a = 10;
int b = 20;
b = 5;
//需求,判断a是否大于b,如果是在控制台输出:a的值大于b,否则,在控制台输出,a的值不大于b
if(a > b){
System.out.println("a的值大于b");
} else {
System.out.println("a的值不大于b");
}
System.out.println("结束!");
}
}
if语句案例:奇偶数
public static void ifTest01(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int i = scanner.nextInt();
//判断整数是偶数还是奇数要分两种情况进行判断,使用if..else结构
//判断是否偶数需要使用取余运算符实现该功能number % 2 == 0
//根据判定情况,在控制台输出对应的内容
if(i % 2 == 0){
System.out.println(i + "是偶数!");
} else {
System.out.println(i + "是奇数!");
}
}
if语句格式3:
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
分支结构:switch语句
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程:
1、首先计算出表达式的值
2、其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。
3、最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch语句-春夏秋冬
一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。
public class Demo1 {
public static void main(String[] args) {
//键盘录入月份数据,使用变量接收
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 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("你输入的月份有误");
}
}
}
如果switch中得case,没有对应break的话,则会出现case穿透的现象
循环结构: for循环
for循环结构
循环语句可以满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形式死循环。
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
初始化语句:用于表示循环开启时的起始状态,简单说就是循环开的时候什么样
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去
在控制台输入1-5和5-1的数据
public static void for01(){
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
System.out.println("--------");
for (int i = 5; i >=1; i--) {
System.out.println(i);
}
}
求出1-5之间的数据之和并打印在控制台
public static void for02(){
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += i;
}
System.out.println(sum);
}
求和变量的定义位置,必须在循环外部,如果在循环内部则计算出来的数据将是错误的
求偶数和
求1-100之间的偶数和,并把结果打印
public static void for03(){
int sum = 0;
for (int i = 0; i < 100; i++) {
if(i%2==0){
sum += i;
}
}
System.out.println(sum);
}
for循环练习水仙花数
在控制台输出所有”水仙花数“,水仙花数指的是一个三位数,个位,十位,百位的数字立方和等于原数字
public static void for04(){
for (int i = 100; i < 1000; i++) {
//计算三位数中每个位置上的值
int g = i%10;
int s = i/10%10;
int b = i/10/10%10;
if(g*g*g + s*s*s +b*b*b == i){
System.out.println(i);
}
}
}
while循环结构
while (条件判断语句) {
循环体语句;
条件控制语句;
}
while循环执行流程
1、执行初始化语句
2、执行条件判断语句,看其结果是true还是false,false循环结束,true继续执行
3、执行循环体语句
4、执行条件控制语句
5、回到2继续执行
public static void whileTest01(){
//需求:在控制台输出5次helloworld
for (int i = 0; i < 5; i++) {
System.out.println("Hello World!");
}
System.out.println("-----------");
int j = 1;
while (j<=5){
System.out.println("helloworld!");
j++;
}
}
while循环–珠峰
世界最高山峰是珠峰为8844.43,假如将一张足够大并且厚度为0.1的纸,折叠多少次可以折成珠峰的高度
public static void while02(){
int s = 0;
double p = 0.1;
int zf = 8844430;
//因为需要反复折叠,不知道折叠了多少次所以需要使用while循环
while(p <= zf){
p *= 2;
s++;
}
System.out.println("需要折叠" + s +"次");
}
do-while循环
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程
1、执行初始化语句
2、执行循环体语句
3、执行条件控制语句
4、执行条件判断语句,看其结果是true(继续执行)还是false(循环结束)
5、回到2继续执行
public class DoWhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//do...while循环实现
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
三种循环的区别
三种循环的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for循环和while的区别
条件控制语句所判断的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能被再次访问到了
条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
死循环(无限循环)的三种格式
1. for(;;){}
2. while(true){}
3. do {} while(true);
跳出控制语句
跳出控制语句(break),跳出循环,结束循环
跳出控制语句(continue),继续下次循环
continue只能在循环中进行使用!
循环嵌套
在循环中,继续定义循环
public static void main(String[] args) {
//外循环控制小时的范围,内循环控制分钟的范围
for (int hour = 0; hour < 24; hour++) {
for (int minute = 0; minute < 60; minute++) {
System.out.println(hour + "时" + minute + "分");
}
System.out.println("--------");
}
}
整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕,外循环是不会继续向下执行的,外循环执行一次,内循环执行一圈