zoukankan      html  css  js  c++  java
  • 【Java】利用二维数组进行排版

    题目:

       创建一个二维数组,将古诗《春晓》的内容赋值于二维数组。然后分别用横版和竖版进行输出

       

    -----------------------------------------------------------------------------------------------------------------------------------

    首先,我们创建一个二维数组,并将《春晓》的内容赋值给二维数组

    方法一:

     1         char a[][] = new char[4][6];
     2         String b = "春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。";
     3         
     4         {
     5             for (int h=0; h<=3; h++) {
     6                 for (int l=0; l<=5; l++) {
     7                     a[h][l] = b.charAt(l + 6 * h);//为什么是 l + 6 * h ,请自行摸索,懒得说了
     8                     
     9                 }
    10             }
    11         }

    通过新建 String 变量 b ,赋予古诗《春晓》为 b 的值, 再通过 for 循环遍历数组以及 String 类的 charAt() 方法对数组进行赋值

    charAt() : 可将指定索引处的字符返回

    方法二:

            char a[][] = new char[4][];
            a[0] = new char[] {'春','眠','不','觉','晓',','};
            a[1] = new char[] {'处','处','闻','啼','鸟','。'};
            a[2] = new char[] {'夜','来','风','雨','声',','};
            a[3] = new char[] {'花','落','知','多','少','。'};

    逐个赋值,量少时可行,量大时效率低下

    数组 a 的下标

    1 00 01 02 03 04 05 
    2 10 11 12 13 14 15 
    3 20 21 22 23 24 25 
    4 30 31 32 33 34 35 

    -----------------------------------------------------------------------------------------------------------------------------------

    接着,我们来输出横版

    按数组的下标看,横版输出的下标应该这样的

    1 00 01 02 03 04 05 
    2 10 11 12 13 14 15 
    3 20 21 22 23 24 25 
    4 30 31 32 33 34 35 

    每一行不变的只有数组 a 的左索引

    当右索引为 5 时,自动换行,并将左索引 +1

    左索引最大值为 3 ,最小值为 0

    右索引最大值为 5, 最小值为 0

    通过双层 for 循环遍历数组进行输出

    因为数组 a 的左索引是相对不变的

    所以,把控制数组 a 的左索引的循环写在外层 for 循环

    控制数组 a 的右索引的循环放在内层 for 循环

    方法一:

     1         {
     2             //遍历输出二维数组a
     3             //横版
     4             for (int h=0; h<=3; h++){
     5                 for (int l=0; l<=5; l++){
     6                     System.out.print(a[h][l]);
     7                 }
     8 
     9                 System.out.println();//换行
    10             }
    11         }

    方法二:

            {
                for (char k[]:a){
                    for (char e:k){
                        System.out.print(e);
                    }
                    System.out.println();//换行
                }
            }

    用 foreach 遍历数组,本质上跟方法一没什么差别

    方法三:

    极其不推荐,影响可读性

            {
                //遍历输出二维数组a
                //横版
                for (int h=0; h<=3; h++){
                    System.out.println(a[h]);//输出并换行
                }
            }

    你不说,别人很容易以为 a 是一维数组

    横版输出结果:

    -----------------------------------------------------------------------------------------------------------------------------------

    接下来看看竖版的要怎么输出

    按数组的下标看,竖版输出的下标应该这样的

    1 30 20 10 00 
    2 31 21 11 01 
    3 32 22 12 02 
    4 33 23 13 03 
    5 34 24 14 04 
    6 35 25 15 05 

    数组 a 的下标

    1 00 01 02 03 04 05 
    2 10 11 12 13 14 15 
    3 20 21 22 23 24 25 
    4 30 31 32 33 34 35 

    每一行不变的只有数组 a 的右索引

    每一行的数组 a 的左索引的数值都在递减

    当左索引为 0 时,自动换行,并将右索引 +1

    右索引最大值为 5 ,最小值为 0

    左索引最大值为 3, 最小值为 0

    通过双层 for 循环遍历数组进行输出

    因为数组 a 的右索引是相对不变的

    所以,把控制数组 a 的右索引的循环写在外层 for 循环

    控制数组 a 的左索引的循环放在内层 for 循环

            {
                for (int l=0; l<=5; l++){
                    for (int h=3; h>=0; h--){
                        System.out.print(a[h][l]);
                    }
    
                    System.out.println();
                }
            }

    这样就利用二维数组的下标对古诗《春晓》进行了横版和竖版的排版

    完整代码

    横版

            char a[][] = new char[4][];
            a[0] = new char[] {'春','眠','不','觉','晓',','};
            a[1] = new char[] {'处','处','闻','啼','鸟','。'};
            a[2] = new char[] {'夜','来','风','雨','声',','};
            a[3] = new char[] {'花','落','知','多','少','。'};
            
            {
                //遍历输出二维数组a
                //横版
                for (int h=0; h<=3; h++){
                    for (int l=0; l<=5; l++){
                        System.out.print(a[h][l]);
                    }
    
                    System.out.println();//换行
                }
            }

    竖版

            char a[][] = new char[4][];
            a[0] = new char[] {'春','眠','不','觉','晓',','};
            a[1] = new char[] {'处','处','闻','啼','鸟','。'};
            a[2] = new char[] {'夜','来','风','雨','声',','};
            a[3] = new char[] {'花','落','知','多','少','。'};
            
            {
                for (int l=0; l<=5; l++){
                    for (int h=3; h>=0; h--){
                        System.out.print(a[h][l]);
                    }
    
                    System.out.println();
                }
            }
  • 相关阅读:
    python3.4+pyspider爬58同城(二)
    pyspider安装后,点击run,报pyhton has stop working或python已停止运行的错误
    PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'C:\Users\video\AppData\Local\Temp\tmpfipzk8ma'--问题解决
    使用firefoxprofile,selenium设置firefox,初始化firefox
    排序算法讲解
    Java寫聊天小程序
    csproj项目工程文件的脚本/动态链接库设置
    常见的内存加密防破解及安全方案
    Animator直接引用FBX下的AnimClip与直接引用单独的AnimClip的对比
    Jupyter多内核的手动配置(Python多版本)
  • 原文地址:https://www.cnblogs.com/syxy/p/9364167.html
Copyright © 2011-2022 走看看