【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();
            }
        }

 

posted @ 2018-07-25 12:25  水汐音  阅读(1443)  评论(0编辑  收藏  举报