用二维数组保存一首唐诗(五言或七言),每一行代表一句,保存格式如下: 剑外忽传收蓟北 初闻涕泪满衣裳 却看妻子愁何在 漫卷诗书喜欲狂 白日放歌须纵酒 青春作伴好还乡 即从巴峡穿巫峡 便下襄阳向洛阳 要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列),输出格式如下: 便 即青 白 漫 却初 剑 下 从春 日 卷 看闻 外 襄 巴作 放 诗 妻涕 忽 阳 峡伴 歌 书 子泪 传 向 穿好 须 喜 愁满 收 洛 巫还 纵 欲 何衣 蓟 阳 峡乡 酒 狂 在裳 北
我的分析:其实这就是将一个不规则数组顺时针旋转90度的题目;
算法:
- public class PoemPrinter {
- public static void main(String[] args) {
-
- String poemTitle="闻官军收河南河北";
- String poet="[唐] 杜甫";
- char[][] poem={
- {'剑','外','忽','传','收','蓟','北'},
- {'初','闻','涕','泪','满','衣','裳'},
- {'却','看','妻','子','愁','何','在'},
- {'漫','卷','诗','书','喜','欲','狂'},
- {'白','日','放','歌','须','纵','酒'},
- {'青','春','作','伴','好','还','乡'},
- {'即','从','巴','峡','穿','巫','峡'},
- {'便','下','襄','阳','向','洛','阳'}
- };
- System.out.println("\t" + poemTitle);
- System.out.println("\t\t\t" + poet);
- System.out.println("-------------------------------");
-
- for (int i = 0; i < poem[0].length; i++) {//外层循环必须以列作为变量,因为旋转后,行列就互换了
- System.out.print(" ");
- for (int j = 0; j < poem.length; j++) {//内层循环必须以行作为变量
- System.out.print(poem[poem.length - 1 - j][i] + " ");
- }
- System.out.println();
- }
-
- }
- }
复制代码 求更好的解答方法。
|