zoukankan      html  css  js  c++  java
  • java笔记10之循环

    关于for
        循环语句:for循环,while循环,do...while循环。
        
        for循环格式:
            for(初始化语句;判断条件语句;控制条件语句) {
                循环体语句;
            }
            
            执行流程:
                A:执行初始化语句
                B:执行判断条件语句,看其返回值是true还是false
                    如果是true,就继续执行
                    如果是false,就结束循环
                C:执行循环体语句;
                D:执行控制条件语句
                E:回到B继续。
                
        注意事项:
            A:判断条件语句无论简单还是复杂结果是boolean类型。
            B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
            C:一般来说:有左大括号就没有分号,有分号就没有左大括号

    例子for求和

     1 class ForDemo3 {
     2     public static void main(String[] args) {
     3         //原始做法
     4         System.out.println(1+2+3+4+5+6+7+8+9+10);
     5         
     6         //定义第一个加数
     7         int sum = 0;
     8         
     9         for(int x=1; x<=10; x++) {
    10             //这里的x其实是第二个加数
    11             sum = sum + x;
    12             /*
    13                 0 + 1 = 1
    14                         1 + 2 = 3
    15                                 3 + 3 = 6
    16                                 ...
    17             */
    18             
    19             //sum += x;
    20         }
    21         
    22         System.out.println("sum:"+sum);
    23     }
    24 }

    练习2
            请在控制台输出满足如下条件的五位数
            个位等于万位
            十位等于千位
            个位+十位+千位+万位=百位
            
        分析:
            A:五位数就告诉了我们范围。
            B:分解每一个五位数的个,十,百,千,万位上的数据
            C:按照要求进行判断即可

     1 class ForDemo7 {
     2     public static void main(String[] args) {
     3         //五位数就告诉了我们范围。
     4         for(int x=10000; x<100000; x++) {
     5             //分解每一个五位数的个,十,百,千,万位上的数据
     6             int ge = x%10;
     7             int shi = x/10%10;
     8             int bai  = x/10/10%10;
     9             int qian = x/10/10/10%10;
    10             int wan = x/10/10/10/10%10;
    11             
    12             //按照要求进行判断即可
    13             if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {
    14                 System.out.println(x);
    15             }
    16         }
    17     }
    18 }

    例子3 水仙花

     1 /*
     2     需求:统计”水仙花数”共有多少个
     3     
     4     分析:
     5         A:首先必须知道什么是水仙花数
     6             所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
     7             举例:153就是一个水仙花数。
     8             153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
     9         B:定义统计变量,初始化值是0
    10         C:三位数告诉了我们范围,用for循环就可以搞定
    11         D:获取每一个三位数的个,十,百的数据
    12         E:按照要求进行判断
    13         F:如果满足要求就计数。
    14 */
    15 class ForDemo8 {
    16     public static void main(String[] args) {
    17         //定义统计变量,初始化值是0
    18         int count = 0;
    19         
    20         //三位数告诉了我们范围,用for循环就可以搞定
    21         for(int x=100; x<1000; x++) {
    22             //获取每一个三位数的个,十,百的数据
    23             int ge = x%10;
    24             int shi = x/10%10;
    25             int bai = x/10/10%10;
    26             
    27             //按照要求进行判断
    28             if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
    29                 //如果满足要求就计数。
    30                 count++;
    31             }
    32         }
    33         
    34         System.out.println("水仙花数共有"+count+"个");
    35     }
    36 }

    关于while

    while循环的基本格式:
            while(判断条件语句) {
                循环体语句;
            }
            扩展格式:
            初始化语句;
            while(判断条件语句) {
                 循环体语句;
                 控制条件语句;
            }
            
            通过这个格式,我们就可以看到其实和for循环是差不多的。
            
            for(初始化语句;判断条件语句;控制条件语句) {
                循环体语句;
            }

    关于do。。。。while

    do...while循环的基本格式:
            do {
                循环体语句;
            }while(判断条件语句);
            
            扩展格式;
            初始化语句;
            do {
                循环体语句;
                控制条件语句;
            }while(判断条件语句);

    注意死循环:
            A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
            B:两种最简单的死循环格式
                while(true){...}
                for(;;){...}

    关于循环嵌套

    例子1

     1 /*
     2     需求:请输出一个4行5列的星星(*)图案。
     3     结果:
     4         *****
     5         *****
     6         *****
     7         *****
     8         
     9     循环嵌套:就是循环语句的循环体本身是一个循环语句。
    10     
    11     通过结果我们知道这样的一个结论:
    12         外循环控制行数
    13         内循环控制列数
    14 */
    15 class ForForDemo {
    16     public static void main(String[] args) {
    17         //原始做法
    18         System.out.println("*****");
    19         System.out.println("*****");
    20         System.out.println("*****");
    21         System.out.println("*****");
    22         System.out.println("-------------");
    23         
    24         //虽然可以完成需求,但是不是很好
    25         //如果是多行多列就会比较麻烦
    26         //所以我们准备改进
    27         //如何改进呢?
    28         //我先考虑如何实现一行*的问题
    29         //System.out.println("*****");
    30         //我们要想的是如何实现一次输出一颗*的问题
    31         //System.out.println("*");
    32         //System.out.println("*");
    33         //现在虽然可以一次一颗*,但是却换行了,我要求不能换行,怎么办呢?
    34         //输出语句的另一种格式:System.out.print(); 这个是不带换行的
    35         //System.out.print("*");
    36         //System.out.print("*");
    37         //System.out.print("*");
    38         //System.out.print("*");
    39         //System.out.print("*");
    40         //如果我要在一行上打出多颗*,比较麻烦,而代码是重复的,所以我决定用循环改进
    41         for(int x=0; x<5; x++) {
    42             System.out.print("*");
    43         }
    44         //我们可以通过空的输出语句实现换行:System.out.println();
    45         System.out.println();
    46         
    47         //既然我可以打出一行,我就可以打出第二行
    48         for(int x=0; x<5; x++) {
    49             System.out.print("*");
    50         }
    51         //我们可以通过空的输出语句实现换行:System.out.println();
    52         System.out.println();
    53     
    54         //同理打出第三行,第四行
    55         for(int x=0; x<5; x++) {
    56             System.out.print("*");
    57         }
    58         //我们可以通过空的输出语句实现换行:System.out.println();
    59         System.out.println();
    60         
    61         //既然我可以打出一行,我就可以打出第二行
    62         for(int x=0; x<5; x++) {
    63             System.out.print("*");
    64         }
    65         //我们可以通过空的输出语句实现换行:System.out.println();
    66         System.out.println();
    67         System.out.println("-----------------");
    68         //同样的代码出现了4次,说明我们程序写的不好,用循环改进
    69         for(int y=0; y<4; y++) {
    70             for(int x=0; x<5; x++) {
    71                 System.out.print("*");
    72             }
    73             //我们可以通过空的输出语句实现换行:System.out.println();
    74             System.out.println();
    75         }
    76     }
    77 }

    例子2 99乘法表

     1 class ForForDemo3 {
     2     public static void main(String[] args) {
     3         for(int x=0; x<9; x++) {
     4             for(int y=0; y<=x; y++) {
     5                 System.out.print("*");
     6             }
     7             System.out.println();
     8         }
     9         System.out.println("--------------");
    10         //为了使用数据,我们从1开始
    11         for(int x=1; x<=9; x++) {
    12             for(int y=1; y<=x; y++) {
    13                 System.out.print(y+"*"+x+"="+y*x+"	");
    14             }
    15             System.out.println();
    16         }
    17     }
    18 }

    关于跳转语句

    控制跳转语句:
            break:中断
            continue:继续  跳出一次循环,进入下一次的执行
            return:返回   其实它的作用不是结束循环的,而是结束方法的
        break:中断的意思
        使用场景:
            A:switch语句中
            B:循环语句中。
                (循环语句中加入了if判断的情况)
            注意:离开上面的两个场景,无意义。
            
        如何使用呢?
            A:跳出单层循环
            B:跳出多层循环
                要想实现这个效果,就必须知道一个东西。带标签的语句。
                格式:
                    标签名: 语句
    例子1

     1 class ContinueDemo {
     2     public static void main(String[] args) {
     3         for(int x=0; x<10; x++) {
     4             if(x == 3) {
     5                 //break;
     6                 continue;
     7             }
     8             
     9             System.out.println(x);
    10         }
    11     }
    12 }

    例子2

     1 class ReturnDemo {
     2     public static void main(String[] args) {
     3         for(int x=0; x<10; x++) {
     4             if(x == 2) {
     5                 System.out.println("退出");
     6                 //break;
     7                 //continue;
     8                 return;
     9             }
    10             
    11             System.out.println(x);
    12         }
    13         
    14         System.out.println("over");
    15     }
    16 }
  • 相关阅读:
    守望先锋-生涯数据信息抓取的实现
    Norm 数据库操作竟然可以如此简单
    java中关于转义字符的一个bug
    在Java中==的一个坑
    人机ai五子棋 ——五子棋AI算法之Java实现
    MySQL数据库罕见的BUG——Can't get hostname for your address
    [疑难杂症]__关于cmd命令正确而显示不是内部指令的错误(ps:已解决)
    [疑难杂症]__点击win10屏幕最上方的边界会莫名其妙打开Internet Explorer浏览器,不胜其烦(2次ps:已解决!!!).
    [Java初探外篇]__关于正则表达式
    [java初探外篇]__关于StringBuilder类与String类的区别
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6266758.html
Copyright © 2011-2022 走看看