黑马程序员技术交流社区
标题: 每日一题之唐诗输出,求更好的解法 [打印本页]
作者: hello_world! 时间: 2012-10-21 22:05
标题: 每日一题之唐诗输出,求更好的解法
用二维数组保存一首唐诗(五言或七言),每一行代表一句,保存格式如下:
剑外忽传收蓟北
初闻涕泪满衣裳
却看妻子愁何在
漫卷诗书喜欲狂
白日放歌须纵酒
青春作伴好还乡
即从巴峡穿巫峡
便下襄阳向洛阳
要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列),输出格式如下:
便 即青 白 漫 却初 剑
下 从春 日 卷 看闻 外
襄 巴作 放 诗 妻涕 忽
阳 峡伴 歌 书 子泪 传
向 穿好 须 喜 愁满 收
洛 巫还 纵 欲 何衣 蓟
阳 峡乡 酒 狂 在裳 北
我的分析:其实这就是将一个不规则数组顺时针旋转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();
- }
-
- }
- }
复制代码 求更好的解答方法。
作者: 陆建平 时间: 2012-10-21 23:15
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();
}
}
作者: 汤瑞贺 时间: 2012-10-22 01:41
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]);//整行打印
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |