unit7 程序控制结构
来源:互联网 发布:祖传秘方淘宝可以卖吗 编辑:程序博客网 时间:2024/06/02 01:32
unit7 程序控制结构
1. 程序逻辑
2. 选择结构
3. 循环结构
4. 循环的跳转
1 程序逻辑
1.1 顺序结构
如同阅读文章一样,从入口到出口一条龙执行完毕,如之前购物小票打印便是顺序结构。
1.2 分支结构
通过条件判断,选择性执行代码块。
1.3 循环结构
通过对给定条件的判断,完成代码的重复执行。
2 选择结构
2.1 if语句
单条件判断,格式
if(条件){
执行的代码
}
条件的数据类型为boolean,可以是返回结果为boolean类型的方法,也可以是true、false常量、关系运算符、boolean类型的变量。当条件为true的时候,条件成立,执行后面的代码块,不成立为false,则不执行。
//if:单条件判断,总价超过1000,打8折
double total = 1000;
if (total > 1000){
total *=0.8;
}
2.2 if……else语句
互斥条件判断
//if else,条件判断,总价超过1000,打8折,否则打9折 double total = 1001; if (total > 1000){ total *=0.8; }else { total *=0.9;}
2.3 if……else if……else语句
多条件判断,可以在多个if条件中选择满足条件的代码块执行,不满足执行else体的代码。
double total = 1000; if (total > 1000){ total *=0.8; }else if(total >500){ total *=0.9; }else{ //else可写可不写,如果不写,则当不满足if条件直接跳过执行下面的语句 total *=0.95;}
2.4 多重选择---switch语句
在现实业务中,许多场景需要我们从多个固定的值中选出一个进行操作。比如登录系统,选择身份:老板或者收银员,进入的系统也就不一样。
Switch语句可以根据一个变量值,对比多个可选值,当变量值匹配到可选值以后,执行该值对应的代码块。
//switch:多重选择 int choose = 1;//1代表老板,2代表收银员 switch (choose) { case 1: //代表某一情况的值,当choose==1时,则执行该段代码块 System.out.println("boss"); break; case 2: System.out.println("cashier"); break; default: //当以上值都没匹配到时,执行该段代码,可写可不写 System.out.println("enter error"); break; }
3 循环结构
3.1 while循环
有时候需要根据给定的条件循环执行代码,这个时候使用while循环完成任务,while后面括号里的表达式为布尔类型,true执行循环代码,false退出循环,执行时,先判断是否满足条件,满足,值为true则执行,不满足就退出循环。
//while循环 int num1 = 0; while (num1 <= 10){ //只要num1满足小于等于10,代码就会一直执行下去,括号中的数据类型为布尔类型,为true时,执行循环代码,flase结束循环 System.out.print(++num1+"、"); }
3.2 do……while循环
和while语句区别在于:while先判断条件是否成立,再去执行,do……while是先执行代码,再判断条件是否成立。
//do……while,先执行,后判断 do { System.out.println("先执行代码"); } while (1>2);
3.3 for循环
循环,当需要对代码循环条件为计次循环的时候,可以使用for循环。
a) for循环语句使用格式
l 循环的重要组成部分
a) 循环变量初始化 (初始化表达式)
b) 循环出口(布尔表达式)
c) 循环增量(步进表达式)
d) 循环逻辑内容(循环体)
l for循环格式
for(初始化表达式①;布尔表达式②;步进表达式④){
循环体③
}
执行顺序: ①②③④>②③④>②③④… ②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况
b) for循环注意事项
a)①②③④四个部分均可以为空
当①为空时,注意变量作用域的范围变化
当②为空时,为条件永远为true的死循环
当③为空时,通常没有意义
当④为空时,可以将其加入到循环体中,或同样成为死循环
b) 初始化表达式①的部分可以同时定义多个变量
步进表达式可以同时将多个循环相关变量改变,控制循环条件
//for循环打印从0到99数字 for (int i = 0; i <= 99;i++) { System.out.print(i + " 、"); }
3.4 foreach循环
遍历循环,类似jquery中$.each()方法对元素的遍历操作。Foreach可以快速的对数组、集合的成员进行一次遍历操作。
//foreach遍历操作 int[] arr = {1,2,3,4,5}; for (int i : arr) { //i:每次循环时候,对应数组中的一个int类型数据,arr:数组,暂时理解为一个容器,里面放的全都是int类型数据 System.out.println(i); }
3.5 循环嵌套
很多时候,一个循环是无法满足我们的业务需要,可能会用到循环中嵌套循环,就像if和else if那样,语句中还可以有if语句。
这里以99乘法表作为案例:
//使用for循环打印99乘法口决表 for (int i = 1; i < 10;i++) { for (int j = 1; j <= i;j++) { System.out.print(j + " * " + i + " = " + j * i+"\t"); } System.out.println(); } System.out.println(); //使用while打印99乘法口决表 int x = 1; while (x<=9) { int y = 1; while (y<=x) { System.out.print(y+ " * " + x + " = " +x*y+"\t"); y++; } x++; System.out.println(); } }
4 循环的跳转
Java提供continue、break、return关键字实现对循环的控制、结束功能。
4.1 break语句
结束循环,使用break强行终止循环,而不是当循环的条件不满足的时候才结束,一旦遇到break,系统就会结束当前循环,执行循环外的代码。
//循环的跳转 //break:结束当前所在的循环,无论哪种 int num2 = 1; while (num2<10){ if (num2>3) { System.out.println("强行结束循环!"); break; } System.out.println("打印:" + num2); num2++; } for (int i = 0; i < 10;i++) { System.out.println("打印:" + i); if (i>3) { System.out.println("打印结束!");//注意,当使用break结束循环,那么break后不能再有任何代码,因为那是无法被执行到的! break; } } //但是break只会结束当前所在的循环,如果是双层嵌套循环,是无法结束外层循环。 for (int i = 0; i < 10;i++) { for (int j = 0; j < 10; j++) { System.out.println("内层循环打印了j:" + j); if (j == 3) { System.out.println("这里已经结束了内层循环,但是外层循环还是会继续!"); break; } } System.out.println("外层循环打印i:" + i); }
continue语句
continue 的功能和break有点类似,区别是continue只是忽略了本次循环剩下的代码,接着开始下一次循环,并不会终止循环,而break是完全终止循环本身。
//continue:忽略本次循环剩下的代码 for (int i = 0; i < 5; i++) { if (i == 2) { System.out.println("这里忽略了剩下的代码,所以你看不到这是第几次循环");//记住,这里和break一样,不能在continue所在代码块中后面继续写代码。 continue; } System.out.println("这是第" + i + "次打印!"); }
4.2 return语句
return本身并不是用来控制循环的,而是结束所在的方法,后面可跟上数据、变量、常量和表达式返回给调用者,在这里可以起到结束方法作用,当使用return时,无论多少循环嵌套,都会被直接结束!
5 练习:
1、99乘法表打印(使用for和while循环打印)
1、 效果是打印9行,9列,也就是说是一个双层for循环,判断的条件是列数和行数都小于9。
2、 定义两层for循环,外层循环打印行,内层循环打印列。
3、 依据的条件是:内层循环打印的列数不能大于当前外层打印的行数
for(int i = 1; i <=9 ;i++){ for(int j = 1; j<= i ;j++){ System.out.print(j + "*" +i + "=" + i * j +"\t" ); } System.out.println(); }
2、再看while循环打印99乘法表
intx = 1; while(x<=9){ intj = 1; while(j<=x){ System.out.print(j + "*" +x + "=" + x * j +"\t" ); j++; } System.out.println(); x++; }
2、水仙花数:一个三位数,每位数字的3次方相加等于该数本身。
思路:循环遍历所有的三位数,然后判断条件是否成立。
for(int i = 100 ; i < 1000 ;i++){ int bai =i / 100; int shi =i % 100 / 10 ; int ge = i% 10 ; if(bai * bai * bai + shi * shi * shi + ge * ge *ge == i){ System.out.println(i + "是一个水仙花数!"); } }
3、母鸡3元,公鸡4元,小鸡0.5元,100元买100只鸡
思路:三层for循环,依次把每一种可能性遍历出来,然后判断条件是否成立,就OK!
条件:买的鸡一共数量=100,并且花了100块钱。
int temp = 0; for( int muji = 1;muji<=98 ;muji++){ for(intgongji = 1; gongji<=98 ; gongji++){ for(intxiaoji = 1;xiaoji <=98 ;xiaoji++){ if((muji+ gongji +xiaoji == 100) && (muji *3 +gongji*4 +xiaoji *0.5 ==100)){ System.out.println("母鸡买了"+muji+"只,战斗鸡买了"+gongji+"只,小鸡买了"+xiaoji+"只"); } temp++; } } }
4、求101~200素数,除了1和他本身外不能被任何数整除。
思路:循环遍历101~200之间的数,内层一个循环遍历1~该数之间的数,依次对内层循环遍历的数取余,如果出现i%j==0的情况,就说明该数不是素数!
for(int i=102;i<200;i++){ booleanboo = true; for(intj = 2; j<i; j++){ if(i%j==0){ boo=false; } } if(boo){ System.out.println(i+"素数"); } }
下面是我练习的代码:
package day07;public class Program {public static void main(String[] args) {//if:单条件判断,总价超过1000,打8折,否则打9折double total = 1000;if (total > 1000) {total *= 0.8;}else if(total >500){total *= 0.9;}else{//else可写可不写,如果不写,则当不满足if条件直接跳过执行下面的语句total *= 0.95;}//switch:多重选择int choose = 1;//1代表老板,2代表收银员switch (choose) {case 1://代表某一情况的值,当choose==1时,则执行该段代码块System.out.println("boss");break;case 2:System.out.println("cashier");break;default://当以上值都没匹配到时,执行该段代码,可写可不写System.out.println("enter error");break;}//while循环int num1 = 0;while (num1 <= 10){//只要num1满足小于等于10,代码就会一直执行下去,括号中的数据类型为布尔类型,为true时,执行循环代码,flase结束循环System.out.print(++num1+"、");}System.out.println();//do……while,先执行,后判断do {System.out.println("先执行代码");} while (1>2);//for循环打印从0到99数字for (int i = 0; i <= 99; i++) {System.out.print(i + " 、");}//foreach遍历操作int[] arr = {1,2,3,4,5};for (int i : arr) {//i:每次循环时候,对应数组中的一个int类型数据,arr:数组,暂时理解为一个容器,里面放的全都是int类型数据System.out.println(i);}//使用for循环打印99乘法口决表for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + " * " + i + " = " + j * i+"\t");}System.out.println();}System.out.println();//使用while打印99乘法口决表int x = 1;while (x<=9) {int y = 1;while (y<=x) {System.out.print(y+ " * " + x + " = " +x*y+"\t");y++;}x++;System.out.println();}//循环的跳转//break:结束当前所在的循环,无论哪种int num2 = 1;while (num2<10){if (num2>3) {System.out.println("强行结束循环!");break;}System.out.println("打印:" + num2);num2++;}for (int i = 0; i < 10; i++) {System.out.println("打印:" + i);if (i>3) {System.out.println("打印结束!");//注意,当使用break结束循环,那么break后不能再有任何代码,因为那是无法被执行到的!break;}}//但是break只会结束当前所在的循环,如果是双层嵌套循环,是无法结束外层循环。for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {System.out.println("内层循环打印了j:" + j);if (j == 3) {System.out.println("这里已经结束了内层循环,但是外层循环还是会继续!");break;}}System.out.println("外层循环打印i:" + i);}//continue:忽略本次循环剩下的代码for (int i = 0; i < 5; i++) {if (i == 2) {System.out.println("这里忽略了剩下的代码,所以你看不到这是第几次循环");//记住,这里和break一样,不能在continue所在代码块中后面继续写代码。continue;}System.out.println("这是第" + i + "次打印!");}/*母鸡3元,公鸡4元,小鸡0.5元,100元买100只鸡,成立的条件就是三者总数相加等于100,总价等于100 * 条件为:muji + gongji + xiaoji == 100 && muji * 3 +gongji * 4 + xiaoji * 0.5 ==100 * 思路:三层for循环,直到满足条件*/for (int muji = 1; muji < 98; muji++) {for (int gongji = 1; gongji < 98; gongji++) {for (int xiaoji = 1; xiaoji < 98; xiaoji++) {if (muji + gongji + xiaoji == 100 && muji * 3 +gongji * 4 + xiaoji * 0.5 ==100) {System.out.println("购买方案为:母鸡:" + muji + "只,"+"公鸡:" + gongji + "只,"+"小鸡:" + xiaoji + "只");}}}}}}
- unit7 程序控制结构
- 程序控制结构
- unit7
- unit7
- Unit7
- C语言程序控制结构
- PLSQL程序控制结构
- Python程序控制结构
- scala程序控制结构
- C语言程序控制结构
- R语言程序控制结构
- Oracle 程序控制结构
- python 程序控制结构
- 三.python程序控制结构
- matlab程序控制结构
- C语言中的程序控制结构
- 3.PL/SQL程序控制结构
- Ch3 PL/SQL程序控制结构
- 1
- 使用AspectJ实现将写入FTP服务的数据转存到Mysql数据库的解决方案
- 2
- 在Listener(监听器)定时启动的TimerTask(定时任务)中使用Spring@Service注解的bean
- [Coursera 计算导论与C语言基础] 期末编程测试
- unit7 程序控制结构
- Java复习之简单工厂模式
- 性能测试工具介绍
- 算法笔记_029-约瑟夫斯问题(Java)
- HDU 1053 Entropy
- 我的算法
- Unity3D对apk反编译、重编译、重签名
- Java 内省简介
- 【4】 .net MVC使用Session验证用户登录