FUNDAMENTAL Unit04 循环结构(while、do-while、for)
2017-06-09 22:17
465 查看
1.循环:反复执行一段相同或相似的代码
2.循环三要素:
1)循环变量的初始化2)循环的条件(以循环变量为基础)
3)循环变量的改变(向着循环的结束变)
循环变量:在循环过程中所改变的那个数
3.循环结构:
1)while:先判断后执行,有可能一次都不执行while( boolean表达式 ) { 语句块; }
while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。
while语句的流程图如下图所示,需要注意的是,一般情况下,循环操作中会存在使得循环条件不满足的可能性,否则该循环将成为“死循环”。“死循环”意味着会一直执行循环体操作,循环后面的语句永远不会被执行,“死循环”在软件系统中是需要避免的。
2)do…while:先执行后判断,至少执行一次
第1要素与第3要素相同时首选
do { 语句块 } while( boolean表达式 ) ;
do-while语句的执行过程为,先执行语句块,再判断boolean表达式,如果为true则再次执行语句块,如此循环往复,直到boolean表达式的值为false时止。也就是说,do-while语句,无论boolean表达式是否为true,都先执行一次语句块。
do-while语句的流程图如下图所示,与while语句一样,do-while语句也要避免“死循环”的发生。
3)for:应用率最高,固定次数循环
for ( 表达式1;表达式2;表达式3 ) { 语句块(循环体) }
可以看出,for循环的三个表达式之间通过分号;进行分隔,其执行逻辑如下所示:
1.计算表达式1的值,通常为循环变量赋初值;
2.计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;
3.执行循环体;
4.计算表达式3的值,此处通常写更新循环变量的赋值表达式;
5.计算表达式2的值,若值为true则执行循环体,否则跳出循环;
6.如此循环往复,直到表达式2的值为false。
for语句流程图如下图所示:
4.break:退出循环
continue:跳过循环体中剩余语句而进入下一次循环while循环演示:
package day04; //while的演示 public class WhileDemo { public static void main(String[] args) { /* * 练习: * 1)输出10次"行动是成功的阶梯" * 2)输出9的乘法表(正序1到9) * 3)输出9的乘法表(倒序9到1) * 4)输出9的乘法表(正序1/3/5/7/9) * * 要求: * 任选其二写执行过程 */ /* int num=9; while(num>=1){ System.out.println(num+"*9="+num*9); num--; } System.out.println("over"); */ /* int num=1; //1.循环变量的初始化 while(num<=9){ //2.循环的条件 System.out.println(num+"*9="+num*9); num++; //3.循环变量的改变 } System.out.println("over"); */ /* int times=0; //1.循环变量的初始化 while(times<10){ //2.循环的条件 System.out.println("行动是成功的阶梯"); times++; //3.循环变量的改变 } System.out.println("over"); */ /* * 执行过程: * times=0 * true 输出 times=1 * true 输出 times=2 * true 输出 times=3 * true 输出 times=4 * true 输出 times=5 * true 输出 times=6 * true 输出 times=7 * true 输出 times=8 * true 输出 times=9 * true 输出 times=10 * false while循环结束 */ } }
do while循环演示:
package day04; import java.util.Scanner; //猜数字小游戏 public class Addition { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = (int)(Math.random()*1000+1); //1到1000之内的随机数 System.out.println(num); //作弊 int guess; do{ System.out.println("猜吧!"); guess = scan.nextInt(); //1,3 if(guess==0){ break; } if(guess>num){ System.out.println("太大了"); }else if(guess<num){ System.out.println("太小了"); } }while(guess!=num); //2 if(guess==num){ System.out.println("恭喜你,猜对了!"); }else{ System.out.println("下次再来吧!"); } } }
for循环演示
package day04; //for的演示 public class ForDemo { public static void main(String[] args) { /* //累加1到100的和,除了个位为3的 int sum = 0; for(int num=1;num<=100;num++){ if(num%10!=3){ sum+=num; } } System.out.println("sum="+sum); */ /* //累加1到100的和,跳过个位为3的 int sum = 0; for(int num=1;num<=100;num++){ if(num%10==3){ continue; } sum += num; } System.out.println("sum="+sum); */ /* * sum=0 * num=1 sum=1 * num=2 sum=1+2 * num=3 * num=4 sum=1+2+4 * ... * num=13 */ /* int sum = 0; for(int num=1;num<=100;num++){ if(sum>=4000){ break; } sum += num; } System.out.println("sum="+sum); */ /* int sum = 0; int num=1; for(;num<=100;num++){ sum += num; } System.out.println("sum"+sum); */ /* int sum = 0; for(int num=1;num<=100;){ sum += num; num++; } System.out.println("sum"+sum); */ /* for(;;){ //死循环 System.out.println("我要学习..."); } */ /* for(int i=0,j=6;i<5;i+=2,j-=2){ } */ /* * i=0,j=6 * i=2,j=4 * i=4,j=2 * i=6,j=0 */ /* //累加:1+2+3+4+...+99+100=? int sum = 0; //和 for(int num=1;num<=100;num++){ sum += num; } System.out.println("sum"+sum); */ /* * sum=0 * num=1 sum=1 * num=2 sum=1+2 * num=3 sum=1+2+3 * num=4 sum=1+2+3+4 * num=5 sum=1+2+3+4+5 * ... * num=100 sum=1+2+3+4+5+...+100 * num=101 */ /* for(int times=0;times<10;times++){ System.out.println("行动是成功的阶梯"); } for(int num=1;num<=9;num++){ System.out.println(num+"*9="+num*9); } */ } }
随机加法计算器
package day04; import java.util.Scanner; //随机加法运算器 public class Addition { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int score = 0; //得分 for(int i=1;i<=10;i++){ //10次 int a = (int)(Math.random()*100); //加数a int b = (int)(Math.random()*100); //加数b int result = a+b; //存和 System.out.println("("+i+")"+a+"+"+b+"=?"); //1.出题 System.out.println("算吧!"); int answer = scan.nextInt(); //2.答题 if(answer==-1){ System.out.println("下次再来吧!"); break; } if(answer==result){ //3.判题 System.out.println("答对了"); score += 10; //答对一题加10分 }else{ System.out.println("答错了"); } } System.out.println("score="+score); } }
相关文章推荐
- java基础学习——循环结构(while,do-while,for)笔试题
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- C# 循环结构while,do-while和for的区别以及跳转语句
- Java 循环结构 - for, while 及 do...while
- java基础--循环结构for,while和do..while的区别
- 循环结构(while、do…while、for)
- 黑马程序员——选择结构if、switch,循环结构while、do-while、for
- Day 4 : 循环结构(while、do…while、for)
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- 黑马程序员-----java基础------for循环结构----do...while循环----while循环------方法---数组(一维,二维)
- Java 循环结构for、do...while、while
- Java 循环结构 - for, while 及 do...while
- JavaScript之基础-7 JavaScript 循环结构 (while、do-while、for及循环中的continue、break)
- switch 语句还有 循环结构 while 、do-while、 for
- day04-java-循环结构(while、do-while、for)