• 【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();
                }
            }
  • 相关阅读:
    2017-2018-1 20155304 20155332 实验二 固件程序设计
    《信息安全技术》实验二 口令破解
    2017-2018-1 20155304 《信息安全系统设计基础》第六周学习总结
    2017-2018-1 20155304 20155310 20155337 实验一 开发环境的熟悉
    2017-2018-1 20155304 《信息安全系统设计基础》第五周学习总结
    第五周 加分题-mybash的实现
    2017-2018-1 20155304 《信息安全系统设计基础》第四周学习总结
    2017-2018-1 20155304 《信息安全系统设计基础》第三周学习总结
    课下作业2
    课下作业1
  • 原文地址:https://www.cnblogs.com/syxy/p/9364167.html
Copyright © 2020-2023  润新知