1.流程控制
1.1流程控制语句概述
1.2流程控制语句分类
1.3顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
/*** 顺序结构*/public class constant {public static void main(String[] args) {System.out.println("开始");System.out.println("语句1");System.out.println("语句2");System.out.println("语句3");System.out.println("语句4");System.out.println("语句5");System.out.println("结束");}}结果开始语句1语句2语句3语句4语句5结束从上往下依次执行
1.4分支结构(if,switch 语句控制)
1.4.1 if语句格式1
格式:if(关系表达式){语句体}
执行流程:
1.首先计算关系表达式的值
2.如果关系表达式的值为true就执行语句体
3.如果关系表达式的值为false就不执行语句体
4.继续执行后面的语句的内容
/*** if 语句格式* if(关系表达式){* 语句体* }* 执行流程* 1.首先计算关系表达式中的值* 2.如果关系表达式的值为true就执行语句体* 3.如果关系表达式的值为false就不执行语句体* 4.继续执行后面的语句内容*/public class constant {public static void main(String[] args) {System.out.println("开始");// 声明2个int变量int a = 2;int b = 3;// 需求判断a和b的值是否相等,如果相等,就在控制台输出a等于bif (a == b) {System.out.println("a等于b");};System.out.println("结束");}}
1.4.2 if语句格式2
格式if(关系表达式){语句体}else{语句2}
执行流程
1.首先计算关系表达式的值
2.如果关系表达式的值为true就执行语句1
3.如果关系表达式的值为false就执行语句2
4继续执行后面代码。
/*** 格式* if(关系表达式){语句体}else{语句2}* 执行流程* 1.首先计算关系表达式的值* 2.如果关系表达式的值为true就执行语句1* 3.如果关系表达式的值为false就执行语句2* 4继续执行后面代码。*/public class constant {public static void main(String[] args) {System.out.println("开始");// 声明2个int变量int a = 2;int b = 3;// 需求判断a和b的值是否相等,如果相等,就在控制台输出a等于b,如果a不等于b,则控制台输出a不等于bif (a == b) {System.out.println("a等于b");} else {System.out.println("a不等于b");};System.out.println("结束");}}
案例 :奇偶数
需求:任意给出一个整数,请用程序实现判断整数是奇数还是偶数,并在控制台输出该整数时奇数还是偶数
分析:1为了体现任意给出一个整数,采用键盘录入一个数据
使用键盘录入功能需要导包
import java.util.Scanner
创建对象
Scanner sr=new Scanner(System.in)
接收数据
int number =sr.nextlnt();
2,判断整数是偶数还是奇数要分两种情况进行判断,使用if…else 结构。
if(){}else{}
3.判断是否偶数需要使用取余运算符实现功能number%2==0
if(number%2==0){}else{}
4.根据判断情况,在控制台输出相应的内容
if(mumber%2==0){System.out。println(number+“是偶数”)}else{System.out。println(number+“是奇数”)}
/*** 格式:* 需求:任意给一个整数,请程序实现判断整数是偶数还是奇数,并在控制台输出该整数时奇数还是偶数、*///为了体现任意给出一个整数,采用键盘录入一个数据//1.使用键盘录入功能需要导包import java.util.Scanner;public class constant {public static void main(String[] args) {// 创建对象Scanner myScanner = new Scanner(System.in);// 接收数据int number = myScanner.nextInt();// 2 判断整数是偶数还是奇数 分两种情况进行判断,使用if...elseif (number % 2 == 0) {System.out.println(number + "是偶数");} else {System.out.println(number + "是奇数");}}}
格式:
if(关系表达式1){语句1}else if(关系表达式2){语句2}else{语句体}
执行流程:
1.首先计算关系表达式1的值
2.如果值为true就执行语句1,如果值为false就计算关系表达式2的值
3.如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
4.。。。。。
5.如果没有任何关系表达式为true,就执行语句体n+1
/*** 格式:* if(关系表达式1){语句1}else if(关系表达式2){语句2}else{语句3}* 执行了流程:首先计算关系式1的值* 2.如果值为true就执行语句体1,如果值为false就计算关系表达式的值* 3.如果值为true就执行语句体2,如果值为false就输出语句3*///为了体现任意给出一个整数,采用键盘录入一个数据//1.使用键盘录入功能需要导包import java.util.Scanner;public class constant {public static void main(String[] args) {// 创建对象Scanner sc = new Scanner(System.in);// 需求:键盘录入一个星期(1,2,3,4,5,6,7)输出对应的是星期一,二,三,四,星期日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 if (week == 7) {System.out.println("星期日");} else {System.out.println("输入有误");}}}
案例:考试奖励
小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,
请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
90-94 去游乐场
95-100分 购买属于自己的自行车
80-89分 变形金刚
80分以下,揍一顿
1.小明的考试未知,可以采用键盘录入的方式获取值,使用键盘录入功能需要导包,创建对象,接收数据
import java.util.Scanner;Scanner sc=new Scanner(System.in);int score=sc.nextInt();
2.由于奖励种类较多,属于多种判断,采用if…else,=…if 格式实现
if(){}else if(){}else if(){}else{}
3.为每种判断设置对应的条件
if(score>=95&&score<=100){}else if(score>=90&&score<=94){}else if(score>=80&&score<=89){}else if(score<=80){}
4.为每种判断设置对应的奖励
System.out.println("山地自行车一辆")System.out.println("游乐场玩一次")System.out.println("变形金刚玩具一个")System.out.println("胖揍一顿")
2.switch语句
格式:switch(表达式){case值1:语句体1:break;case值2:语句体2:break;.....default:语句体n+1;[break]}执行流程:1.首先计算表达式的值2.依次和case 后面的值进行比较,如果相应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束3.如果所有的case后面的值和表达式的值不匹配,就会执行default里面的语句体,然后程序结束掉。
/*** 格式: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里面的语句体,然后程序结束掉。*///为了体现任意给出一个整数,采用键盘录入一个数据//1.使用键盘录入功能需要导包import java.util.Scanner;public class constant {public static void main(String[] args) {// 创建对象Scanner scObject = new Scanner(System.in);// 需求:键盘录入一个星期(1,2,3,4,5,6,7)输出对应的是星期一,二,三,四,星期日System.out.println("请输入一个星期数(1-7)");// 接收数据int week = scObject.nextInt();switch (week) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二1");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;}}}
案例:春夏秋冬
需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断月份属于那个季节,并输出。
分析:
- 键盘录入月份数据,使用变量接收
2.多情况判断,这里采用switch实现improt java.util.ScannerScanner object1=new Scanner(System.in)int month=sc.nexInt();
3.在每种情况中,完成输入对应的季节(选择几个) ```javascript case 3: System.out.println(”春季”); break; case 6: System.out.println(”夏季”); break; case 9 : System.out.println(“秋季”); break case 12: System.out.println(“冬季”) breakswitch(month){case x:case x:case x:default:}
```javascript/*** 案例:春夏秋冬* 需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于那个季节,并输出.* 春:3,4,5,* 夏:6,7,8* 秋:9,10,11,* 冬:12,1,2*///键盘录入import java.util.Scanner;public class constant {public static void main(String[] args) {// 创建对象Scanner scObject = new Scanner(System.in);int month = scObject.nextInt();// 多情况判断,这里采用switch语句实现// 在每种情况中,完成输出对应的季节switch (month) {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;case 8:System.out.println("夏季");break;case 9:System.out.println("秋季");break;case 10:System.out.println("秋季");break;case 11:System.out.println("秋季");break;case 12:System.out.println("冬季");break;default:System.out.println("输入月份有误");break;}/*** case 穿透*/switch (month) {case 1:case 2:case 3:case 4:System.out.println("冬季");break;case 5:case 6:case 7:case 8:System.out.println("春季");break;case 9:case 10:case 11:case 12:System.out.println("秋季");break;default:System.out.println("输入月份有误");break;}}}
3循环结构(for,while,do….while 语句控制)
1.1循环结构
循环结构:
初始化语句:用于表示循环开启的起始状态,简单说就是循环开始的时候什么样,
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否执行下去。
循环结构对应的语法:
初始化语句:这里可以是一条或者多条语句,这里语句可以完成一些初始化操作。
条件判断句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体例如a<3
循环体语句:这里可以是任意语句,这些语句将反复执行
条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果,常见的i++,i—,这样的操作。
1.2 for 循环语句格式
格式:for (初始化语句;条件判断语句;条件控制语句){循环体语句}
执行流程:
1.执行初始化语句
执行条件判断语句,看结果是true还是false
如果是false, 循环结束
如果是true ,循环继续执行
3.执行循环体语句
4.执行条件控制语句
5 回到2继续执行。 ```javascript /**- 格式:for(初始化语句;条件判断语句;条件控制语句){
- 循环体
- }
- 执行流程:
- 1,执行初始化语句
- 2.执行条件判断句,看结果为true,还是false
- 如果是false ,循环结束
- 如果是true, 循环继续
- 3.执行循环体语句
- 4.执行条件控制语句
- 5,回到2继续 */
public class constant { public static void main(String[] args) { for (int i = 0; i <= 10; i += 2) { System.out.println(“第” + i + “次”); } }
}
案例:输出数据<br />需求:在控制台输出1-5和5-1数据```javascript分析:1.反复进行输出动作,使用循环结构for(初始化语句;条件判断语句;条件控制语句){}2.从1开始到5结束,设置初始化开始for(int i=1;条件判断语句;条件控制语句){}3.从1开始到5结束,设置判断条件为没有到5的时候继续执行,执行超过5程序结束for(int i=1;i<=5;条件控制语句){}4.从1到5,每次增加1,设置条件控制每条+1for(int i=1;i<=5;i++){}
/*** 案例:输出数据* 需求:在控制台输出1-5和5-1数据*/public class constant {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {System.out.println(i);}for (int j = 5; 1 <= j && j <= 5; j--) {System.out.println(j);}}}
案例:求和
需求:求1-5之间的数据和,并把求和结果在控制台输出
分析:
1.求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
int sum =0;
2.从1开始到5结束的数据,使用循环结构完成
for(int i=1;i<=5;i++){}
3.将反复进行的事情写入循环结构内部,此外反复进行的事情是将数据i加到用于保存最终求和的变量sum中
for(int i=1;i<=5;i++){sum+=i}
4.当循环执行完毕时,最终数据打印出来。
/*** 案例:求和* 需求:求1-5之间的数据和,并把求和结果在控制台输出*/public class constant {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {sum = sum + i;}System.out.println(sum);}}
案例:求偶数和
需求:求1-100之间的偶数和,并把求和结果在控制台输出
分析:1.对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅时结束条件不一样
int sum=0;for(int i=1;i<=100;i++){}
3.限制条件是偶数才参与运算条件,因此条件应该判断是否为偶数
int sum=0;for(int i=1;i<=100;i++){if(i%2==0){sum+=i}}
/*** 案例:求偶数和* 需求:求1-100之间的偶数和,并把求和结果在控制台输出*/public class constant {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}System.out.println(sum);}}
while 循环语句
基本格式:
while(条件判断句){循环体语句;条件控制语句;}
执行流程:
1.执行语句
2.执行条件判断语句,看其结果是true还是false
如果是false 循环结束
如果是true 继续执行
3,执行循环体语句
4.执行条件控制语句
5,回到2继续
/*** 格式: while(布尔表达式){* //循环内容* }* 需求:*/public class constant {public static void main(String[] args) {// 需求:在控制台输出5次""Hello World"int a = 0;while (a <= 5) {System.out.print("Hello World");a += 1;}for (int i = 0; i <= 5; i++) {System.out.print("Hello World");}}}
案例:珠穆朗玛峰
需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。
请问:我折叠多少次,可以折成珠穆朗玛峰高度。
折叠一次厚度为原来的一倍
案例分析:
1.因为要反复折叠,所以要使用循环,但不知道折叠多少次,这种情况下更适合while循环
while(条件判断句){循环体}
2.循环的执行过程中每次纸张折叠,纸张的厚度要加倍,因此需要先定义纸张的厚度,在循环中使厚度加倍。
double paper=0.1 //初始厚度while(条件判断句){paper*=2}
- 折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
4.设置一个计数器,在循环中执行累加,对应叠加多少次。int zf=8844430;//珠穆朗玛峰高度while(paper<=zf){.....}
代码: ```javascript /**int count=0;while (paper<=zf){count++}
- 案例:珠穆朗玛峰
- 需求:世界最高山峰是珠穆朗玛峰(8844.43豪米),假如我有一张足够大的纸,它的厚度是0.1毫米。
- 请问:我折叠多少次,可以折成珠穆朗玛峰的高度
- 折叠一次厚度为原来的一倍 */
public class constant { public static void main(String[] args) { // 纸张厚度 double hd = 0.1; // 珠峰高度 int zf = 8844430; // 定义计时器 int count = 0; // 因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更合适使用while循环 // 折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度 while (hd <= zf) { hd *= 2; count++;
}System.out.println(count + "次");}
}
<a name="dUcn2"></a>## do...while循环语句基本格式:```javascriptdo {循环体语句;}while(条件判断语句)
完整格式:
初始化语句do{循环体语句;条件控制语句;}while(条件判断语句)
执行流程:
1.执行初始化语句
2.执行循环体语句
3.执行条件控制语句
4.执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
5.回到2继续
public class Test {public static void main(String[] args){int x = 10;do{System.out.print("value of x : " + x );x++;System.out.print("\n");}while( x < 20 );}}
三种循环的区别
三种循环的区别:
for 循环和while 循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do….while 循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for 和while 的区别:
条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
条件控制语句所控制的自增变量,对于while 循环来说不属于其语法结构中,在while循环结束后,该变量还可以继续使用。
跳转控制语句控制
continue 用在循环中,基于条件控制,跳出某次循环体内容的执行,继续下一次的执行
break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的循环体
