zoukankan      html  css  js  c++  java
  • For循环嵌套

    循环嵌套:

      就是循环语句的循环体本身是一个循环语句。

    Demo1

      需求:请输出一个4行5列的星星(*)图案。
        结果:
          *****
          *****
          *****
          *****

    结论:
      外循环控制行数
      内循环控制列数

    class ForForDemo {
        public static void main(String[] args) {
            //原始做法
            System.out.println("*****");
            System.out.println("*****");
            System.out.println("*****");
            System.out.println("*****");
            System.out.println("-------------");
            
            //虽然可以完成需求,但是不是很好
            //如果是多行多列就会比较麻烦
            //所以我们准备改进
            //如何改进呢?
            //我先考虑如何实现一行*的问题
            //System.out.println("*****");
            //我们要想的是如何实现一次输出一颗*的问题
            //System.out.println("*");
            //System.out.println("*");
            //现在虽然可以一次一颗*,但是却换行了,我要求不能换行,怎么办呢?
            //输出语句的另一种格式:System.out.print(); 这个是不带换行的
            //System.out.print("*");
            //System.out.print("*");
            //System.out.print("*");
            //System.out.print("*");
            //System.out.print("*");
            //如果我要在一行上打出多颗*,比较麻烦,而代码是重复的,所以我决定用循环改进
            for(int x=0; x<5; x++) {
                System.out.print("*");
            }
            //我们可以通过空的输出语句实现换行:System.out.println();
            System.out.println();
            
            //既然我可以打出一行,我就可以打出第二行
            for(int x=0; x<5; x++) {
                System.out.print("*");
            }
            //我们可以通过空的输出语句实现换行:System.out.println();
            System.out.println();
        
            //同理打出第三行,第四行
            for(int x=0; x<5; x++) {
                System.out.print("*");
            }
            //我们可以通过空的输出语句实现换行:System.out.println();
            System.out.println();
            
            //既然我可以打出一行,我就可以打出第二行
            for(int x=0; x<5; x++) {
                System.out.print("*");
            }
            //我们可以通过空的输出语句实现换行:System.out.println();
            System.out.println();
            System.out.println("-----------------");
            //同样的代码出现了4次,说明我们程序写的不好,用循环改进
            for(int y=0; y<4; y++) {
                for(int x=0; x<5; x++) {
                    System.out.print("*");
                }
                //我们可以通过空的输出语句实现换行:System.out.println();
                System.out.println();
            }
        }
    }

    Demo2

      需求:请输出下列的形状

        *

        **
        ***
        ****
        *****

    class ForForDemo2 {
        public static void main(String[] args) {
            //通过简单的观察,我们看到这是一个行是5,列数是变化的形状
            //我们先打印出一个5行5列的形状
            for(int x=0; x<5; x++) {
                for(int y=0; y<5; y++) {
                    System.out.print("*");
                }
                System.out.println();
            }
            
            System.out.println("--------------");
            
            //我们实现了一个5行5列的形状
            //但是这不是我们想要的
            //我们要的是列数变化的
            //列数是如何变化的呢?
            //第一行:1列    y=0,y<=0,y++
            //第二行:2列    y=0,y<=1,y++
            //第三行:3列    y=0,y<=2,y++
            //第四行:4列    y=0,y<=3,y++
            //第五行:5列    y=0,y<=4,y++
            //在看外循环x的变化,恰好就是x=0,1,2,3,4
            //所以这个最终版的程序就是如下
            for(int x=0; x<5; x++) {
                for(int y=0; y<=x; y++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }

    Demo3

      需求:在控制台输出九九乘法表。

         首先我们写出九九乘法表:
          1*1=1
          1*2=2 2*2=4
          1*3=3 2*3=6 3*3=9
          1*4=4 2*4=8 3*4=12 4*4=16
          ...
          1*9=9 2*9=18 3*9=27 ...

         我们先把这个九九乘法表看出是这样的一个形状:
          *
          **
          ***
          ****
          *****
          ******
          *******
          ********
          *********

    class ForForDemo3 {
        public static void main(String[] args) {
            for(int x=0; x<9; x++) {
                for(int y=0; y<=x; y++) {
                    System.out.print("*");
                }
                System.out.println();
            }
            System.out.println("--------------");
            //为了使用数据,我们从1开始
            for(int x=1; x<=9; x++) {
                for(int y=1; y<=x; y++) {
                    System.out.print(y+"*"+x+"="+y*x+"	");
                    /*
                    注意:
                        'x' x表示任意,这种做法叫转义字符。        
                        '	'    tab键的位置
                        '
    '    回车
                        '
    '    换行
                    */
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    JAVA学习---文件和流
    JAVA学习---集合和工具类
    JAVA学习---异常
    python-time模块
    python-并发编程
    python-网络编程
    python-并发编程之进程
    python-面向对象之多态
    python-面向对象之反射
    python-面向对象之封装
  • 原文地址:https://www.cnblogs.com/frank-me/p/11148771.html
Copyright © 2011-2022 走看看