A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hello_world! 中级黑马   /  2012-10-21 22:05  /  1592 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用二维数组保存一首唐诗(五言或七言),每一行代表一句,保存格式如下:
剑外忽传收蓟北
初闻涕泪满衣裳
却看妻子愁何在
漫卷诗书喜欲狂
白日放歌须纵酒
青春作伴好还乡
即从巴峡穿巫峡
便下襄阳向洛阳
要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列),输出格式如下:
便
穿

我的分析:其实这就是将一个不规则数组顺时针旋转90度的题目;
算法:

  1. public class PoemPrinter {


  2.         public static void main(String[] args) {
  3.                
  4.                 String poemTitle="闻官军收河南河北";
  5.                 String poet="[唐] 杜甫";
  6.                 char[][] poem={
  7.                         {'剑','外','忽','传','收','蓟','北'},
  8.                         {'初','闻','涕','泪','满','衣','裳'},
  9.                         {'却','看','妻','子','愁','何','在'},
  10.                         {'漫','卷','诗','书','喜','欲','狂'},
  11.                         {'白','日','放','歌','须','纵','酒'},
  12.                         {'青','春','作','伴','好','还','乡'},
  13.                         {'即','从','巴','峡','穿','巫','峡'},
  14.                         {'便','下','襄','阳','向','洛','阳'}
  15.                 };
  16.                 System.out.println("\t" + poemTitle);
  17.                 System.out.println("\t\t\t" + poet);
  18.                 System.out.println("-------------------------------");
  19.        
  20.                 for (int i = 0; i < poem[0].length; i++) {//外层循环必须以列作为变量,因为旋转后,行列就互换了
  21.                         System.out.print(" ");
  22.                         for (int j = 0; j < poem.length; j++) {//内层循环必须以行作为变量
  23.                                 System.out.print(poem[poem.length - 1 - j][i] + " ");
  24.                         }
  25.                         System.out.println();
  26.                 }
  27.                
  28.         }

  29. }
复制代码
求更好的解答方法。


评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
package day20;

import java.io.*;
public class PrintStreamDemo {
public static void main(String[] args) throws IOException
        {
                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));

                PrintWriter out = new PrintWriter(new FileWriter("D:\\a.txt"),true);

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                        out.println(line);
                        //out.flush();
                }
               
                out.close();
                bufr.close();
               

        }
       
}
import java.io.*;

class  BufferedReaderDemo
{
        public static void main(String[] args) throws IOException
        {
                //创建一个读取流对象和文件相关联。
                FileReader fr = new FileReader("D:\\a.txt");

                //为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。
                BufferedReader bufr = new BufferedReader(fr);
               

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        System.out.println(line);
                }


                bufr.close();
        }

}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
public class PoemPrinter
{
public static void main(String[] args){
String poemTitle="闻官军收河南河北";
String poet="[唐] 杜甫";
String poemStr="剑外忽传收蓟北"+
"初闻涕泪满衣裳"+
"却看妻子愁何在"+
"漫卷诗书喜欲狂"+
"白日放歌须纵酒"+
"青春作伴好还乡"+
"即从巴峡穿巫峡"+
"便下襄阳向洛阳";
System.out.println("\t"+poemTitle);
System.out.println("\t\t\t"+poet);
System.out.println("-----------------------");
char[][] poemChr1=new char[8][7];//横版
char[][] poemChr2=new char[7][8];//竖版
int index=0;
for(int i=0;i<8;i++)
for(int j=0;j<7;j++)
poemChr1[i][j]=poemStr.charAt(index++);//将字符串变为字符数组

for(int i=0;i<7;i++)
{ for(int j=0;j<8;j++)
{
  poemChr2[i][j]=poemChr1[7-j][i];
}
  System.out.println(poemChr2[i]);//整行打印
}
}
}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马