题目:
创建一个二维数组,将古诗《春晓》的内容赋值于二维数组。然后分别用横版和竖版进行输出
-----------------------------------------------------------------------------------------------------------------------------------
首先,我们创建一个二维数组,并将《春晓》的内容赋值给二维数组
方法一:
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(); } }