程序流程控制(三)--循环(while,do..while,for)

4. 循环

(1). while循环

语法:
while(循环条件){
         循环体
}
解释一下:
循环条件结果如果是 true,那么就执行循环体;如果是 false,就结束循环。通俗来说,就是只有满足了循环条件之后才能执行循环体。
(循环条件只有 true 和 false 这两种情况)
还是举例说明吧:
打印1到100之间的数;
打印1-100之间的所有的奇数和。
// 打印1-100之间的数
class Demo1{    
    public static void main(String[] args){

        int i = 1;

        while(i <= 100){
            System.out.println(i);  
            i++;
        }
    }
}
// 打印1-100之间的所有的奇数和
class Demo1{    
    public static void main(String[] args){

        int i = 1; 
        int sum = 0; //声明变量,用于存储奇数和

        while(i <= 100){
            if(i%2 != 0){
                sum += i; //sum = sum + i;
            }
            i++;
        }
        System.out.println(sum);

    }
}
//输出结果:2500

(2). do…while循环

语法:
do{
         循环体
}while(循环条件);
还是使用上面的例子吧:
打印1到100之间的数;
打印1-100之间的所有的奇数和。
//打印1-100之间的数
class Demo1{    
    public static void main(String[] args){

        int i = 1; 

        do{
            System.out.println(i);
            i++;
        }while(i <= 100);
        //很明显在这里是先执行循环体,变量i自增之后再进行循环条件的判断
    }
}
//打印1-100之间的所有奇数的和
class Demo1{    
    public static void main(String[] args){

        int i = 1; 
        int sum = 0; //声明一个变量,用于存储奇数和

        do{
            if(i%2 != 0){
                sum += i;   
            }               
            i++;
        }while(i <= 100);

        System.out.println(sum);
    }
}
//输出结果:2500


     循环的相关内容总结到这里,突然想到很久以前在学C的时候,做到这样的一个习题:“让我们打印出所有三位数的水仙花数”,大脑里第一反应:神马是水仙花数,一脸懵逼,还要让我们用程序去实现它,感觉好坑爹啊,虽然最后历经波折还是把它给做出来了,现在想想都是一把辛酸泪啊。废话说的有点多了,现在既然又提到了这个题目,我还是用java语言再去做一遍吧。

// 打印出所有三位数的水仙花数
// 什么是水仙花数:一个三位数,它的每一位数的位数次幂之和等于这个数本身,这样的数就是水仙花数。比如153

/**
*分析:
        循环条件:100-1000之间的三位数
        操作:获得这个三位数的每一位,判断是否为水仙花数,自增
*/

class Demo1{    
    public static void main(String[] args){

        int i = 100; 

        do{
            // 获得三位数的每一位
            int a = i%10;  //个位
            int b = (i%100)/10; //十位
            int c = i/100;  //百位
            // 判断是否为水仙花数
            if((a*a*a + b*b*b + c*c*c) == i){
                System.out.println(i);  
            }
            // 自增
            i++;                
        }while(i < 1000);

    }
}
//输出结果为:153、370、371、407

(3). for循环

语法:
for(表达式1; 表达式2; 表达式3){
         循环体
}

有幸在网上找到一张某个筒子分享的for循环执行顺序图,我就懒得再画了,在这里把它的图贴上来供大家形象的理解,谢谢这位筒子了。

循环执行顺序(参照下图):
先执行语句1,在判断循环条件是否为真,如果为真,则执行语句2,如果为假,则退出循环;
执行完语句2,接着执行语句3;
执行完语句3,再反过来判断循环条件是否成立,如果成立,在接着执行语句2,然后再去执行语句3。

这里写图片描述
解释一下:
表达式1:计数器的初始化,仅初始化一次
表达式2:循环条件的判断,需要多次执行它
表达式3:更新计数器,也需要多次执行它
继续举例说明:
还是沿用之前的例子:打印1-100之间的所有的奇数和。
// 打印1-100之间的所有的奇数和

/**
* int i = 1; 是计数器的初始化
* i <= 100; 是循环条件,且它要循环多少次就判断多少次
* i++; 是计数器的累加,也是循环几次就累加几次
*/

class Demo1{    
    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);        
    }
}
//输出结果为:2500
再举两个比较典型的例子吧:
打印6行6列的*
打印九九乘法表
//打印6行6列的*
class Demo1{    
    public static void main(String[] args){

        //这是为了控制行
        for(int j = 1; j <= 6; j++){
            //这是为了控制列
            for(int i = 1; i <= 6; i++){
                System.out.print("*" + " "); //为了使打印出的*阵好看,再*与*之间加一个空格
            }
            System.out.println(); //换行
        }

    }
}
//打印九九乘法表
class Demo1{    
    public static void main(String[] args){

        //做行的循环
        for(int i = 1; i <= 9; i++){
                //做列的循环
                for(int j = 1; j <= i; j++){
                    System.out.print(j + "*" + i + "=" + (j*i) + "\t");
                }
                System.out.println();
        }

    }
}

(4). break

break:结束整个循环

/**
* 一个马拉松运动员,每天早上的训练计划是围着操场跑40圈。
* 可是,今天跑到第10圈的时候,感觉肚子很痛,不能坚持训练了,如何用程序描述呢?
*/

class Demo1{    
    public static void main(String[] args){

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

                if(i==10){
                    System.out.println("肚子很痛,不能跑了...");
                    break;//退出整个父级循环
                }   
        }
        System.out.println("今天训练到此结束!");
    }
}

(5). continue

continue:结束当前循环,后续循环照常执行

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

class Demo1{    
    public static void main(String[] args){

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

            if(i==10){
                System.out.println("去接了个电话回来...");
                continue;//结束本次循环,继续后续的循环
            }
            System.out.println("跑完第"+i+"圈了。");  
        }
        System.out.println("今天训练到此结束!");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值