您的位置:首页 > 其它

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: