← 返回首页
JavaSE系列教程(十)
发表时间:2019-11-29 13:06:17
讲解java程序结构之循环

循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。循环结构有三个要素:循环变量、循环体和循环终止条件。

java中循环有三类,分别是:while循环,do-while循环和for循环。

1.while循环

例如:使用循环计算1+2+3+..+100的求和。

int sum = 0;
int i=1;  //i是循环变量
while(i<=100){    //i<=100是循环结束的条件
    sum+=i;       //大括号里面的代码都是循环体。
    i++;
}
System.out.println("sum=" + sum);

运行结果:
sum=5050

==总结:while循环,先判断,再循环,有可能一次也不循环。==

2.do-while循环

实例: 例如:使用循环计算1+2+3+..+100的求和。

int sum = 0;
int i=1;           //i是循环变量
do{    
    sum+=i;        //大括号里面的代码都是循环体。
    i++;
}while(i<=100);    //i<=100是循环结束的条件
System.out.println("sum=" + sum);

运行结果:
sum=5050

==总结:do-while循环,先循环,再判断,至少循环一次。==

3.for循环

实例: 例如:使用循环计算1+2+3+..+100的求和。

int sum=0;
for(int i=1;i<=100;i++){
    sum +=i;
}
System.out.println("sum=" + sum);

运行结果:
sum=5050

小结: 1)while循环do-while循环适合在不确定循环次数的情况下使用,while循环先判断,再循环,有可能一次也不循环,do-while循环先循环,再判断,至少循环一次。 2)for循环适合在确定循环次数的情况下使用,语法更简洁,编程中使用频率最高。 3)三种循环都可以相互转换,从本质讲没有任何区别。

4.死循环

当循环条件永远为真的时候,就出现了死循环。通常情况下忘记改变循环变量的值是最容易出现死循环的。

常见的死循环有以下形式:

int i=1;
int sum=0;
while(i<100){
  sum +=i;   //忘记改变循环变量i的值。
}

while(true){
   //循环体
}

do{
   //循环体
}while(true);

for(int i=0;true;i++){
   //循环体;
}

for(int i=0;;i++){
   //循环体
}

5.break和continue

break:结束循环,继续执行循环后面的语句。

实例: 一个马拉松运动员,每天早上的训练计划是围着操场跑40圈。可是人有旦夕祸福,天有不测风云,今天跑到第10圈,感觉肚子很痛,不能坚持训练了,如何用程序描述呢?

for(int i=1;i<=40;i++){
    System.out.println("跑完第" + i + "圈了。");

    if(i==10){
    System.out.println("肚子疼,不能继续跑了!");
    break; //跳出整个循环。
    }
}
System.out.println("今天的训练到此结束!");

continue:跳过本次循环,继续执行下次循环。

实例: 一个马拉松运动员,每天早上的训练计划是围着操场跑40圈。今天跑到第10圈,手机电话响了,去接个电话回来接着跑完剩下的圈数,如何用程序描述呢?

for(int i=1;i<=40;i++){

    if(i==10){
    System.out.println("电话响了,我去接个电话!");
    continue; /*结束本次循环,开始下次循环,continue后面语句不执行了。*/
    }
    System.out.println("跑完第" + i + "圈了。");
}
System.out.println("今天的训练到此结束。");

6.多重循环

如果循环语句的循环体中又出现循环语句,就构成多重循环结构。一般常用的有二重循环和三重循环。

实例: 使用多重循环打印九九乘法表。

for(int i=1;i<=9;i++){
    for(int j=1;j<=i;j++){
    System.out.print(i+"*"+j+"="+i*j+" ");
    }
    System.out.println(); //换行
}

运行结果:

1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

实例: 公鸡5文,母鸡3文,小鸡1文3只,花100元买100只鸡。怎么买?(百文买百鸡)

int gjNum; //公鸡的数量
int mjNum; //母鸡的数量
int xjNum; //小鸡的数量
int iCount=0;
for(gjNum=0;gjNum<=20;gjNum++){
    for(mjNum=0;mjNum<=33;mjNum++){
    for(xjNum=0;xjNum<=100;xjNum++){
       //小鸡必须是3的倍数
       if(xjNum%3==0){
            if(gjNum*5+mjNum*3+xjNum/3==100&&gjNum+mjNum+xjNum==100){
           iCount++;
           System.out.println("公鸡买" + gjNum + "只,母鸡买" + mjNum + "只,小鸡买" + xjNum + "只.");
           }
       }
    }
    }
}

System.out.println("一共有" + iCount + "种买法");

运行结果:

公鸡买0只,母鸡买25只,小鸡买75只.
公鸡买4只,母鸡买18只,小鸡买78只.
公鸡买8只,母鸡买11只,小鸡买81只.
公鸡买12只,母鸡买4只,小鸡买84只.
一共有4种买法