java:利用二维数组实现将古诗词纵向输出.

从网络上随便搜索一首古诗词,这里刻意选择句子长短不一的诗词

1.首先先把诗词放进一个二维数组中.

这里将数组类型定义成char 类型,因为将其定义为String [][]poem的话输入句子时候表达形式就要这样写:

这种方式显然非常的麻烦.

String poem[][]=String [][]poem{
{"维","天","之","命",","},
{"於","穆","不","已"},
……
};

于是可以通过toCharArray()这个函数把字符串转换为字符数组.

  1 public class poem {
2 public static void main(String[] args) {
3 char [][]poem=new char[][]{
4 "维天之命,".toCharArray(),
5 "於穆不已。".toCharArray(),
6 "於乎不显,".toCharArray(),
7 "文王之德之纯.".toCharArray(),
8 "假以溢我,".toCharArray(),
9 "我其收之。".toCharArray(),
10 "骏惠我文王,".toCharArray(),
11 "曾孙笃之。".toCharArray()
12 };
2.接下来就是思考怎么去排列的问题了,一共要循环多少次? 
这里我们知道对于词语,字数每一行并不固定,要找出最大的字数长度,也就是说循环的次数就是我们最大的字数长度.保证每一行每一个元素都被访问到.
    int max = 0;                // 获取最大的字数长度
for (int i = 0; i < poem.length+1; i++) {
int t = poem[i].length; // 获取第i行的长度
if (t > max){ // 第i行的长度大于最大值
max = t;
}
}
3.通过for循环,来把数组重新排列.
         for (int i=0;i<max;i++){                  //这里代表输出多少行
for (int j=arrays.length-1;j>=0;j--){
// j代表的是排列前数组的行,用来判断原来第j行的字数 if (i<arrays[j].length){
System.out.print(arrays[j][i]);
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}

运行之后,这里都意识到一个问题,这里的词每一行的字数都不一样,原来是有8行7列,而竖着输出则会有7行8列.
显然会有一个提示出现:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at zhengli.daysixarr.main(daysixarr.java:27)

原来的27行代码稍稍修改为28行代码,就运行正常了.

原因是因为超出了数组的空间界限,

将数组原来的长度加上1,这样子就把原来的7行8列,'扩展'成8行8列.

27        // int t = poem[i].length;         // 获取第i行的长度
28 int t = poem[i].length+1;

运行结果:

曾骏我假文於於维
孙惠其以王乎穆天
笃我收溢之不不之
之文之我德显已命
。王。,之,。,
 ,  纯   
    .   

java:利用数组实现将古诗词纵向输出的更多相关文章

  1. Java利用数组随机抽取幸运观众

    编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名. 思路如下: 定义输入框的按键事件,使用KeyEvent类的get ...

  2. java 去除数组重复数据,并输出重复数据值

    /** * 去除重复数据 * @author Sunqinbo */ public class RemoveDuplicateData { public static void main(String ...

  3. Java利用递归算法统计1-6的数组排列组合数

    Java利用递归算法统计1-6的数组排列组合数 1.设计源码 /** * @Title:ArrayCombination.java * @Package:com.you.data * @Descrip ...

  4. Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出

    ylbtech-Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出 1.返回顶部 1. Java 实例 - 数组输出  Java 实例 以下实例演示了如何通过循环输出数 ...

  5. java中的栈(利用数组实现栈)

    java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...

  6. Java数组去重(利用数组,不借助集合)

    今天有个同学问我说老师,Java里边数组怎么去重,在不借助List集合的情况下,最后呢我整理了一下,打算发一篇博文,希望能帮助到有用的人,大佬绕过 public static void arrUniq ...

  7. Java之数组篇

    动手动脑,第六次Tutorial--数组 这次的Tutorial讲解了Java中如何进行数组操作,包括数组声明创建使用和赋值运算,写这篇文章的目的就是通过实际运用已达到对数组使用的更加熟练,下面是实践 ...

  8. Java(数组)动手动脑

    1>数组作为方法参数 阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: // PassArray.java // Pas ...

  9. JAVA中数组总结(课堂总结)

    数组的特点: Arrays(数组)一种简单的数据结构元素具有相同的数据类型一旦创建之后,尺寸保持不变元素在内存中连续分布例子一:按引用与按值传递的示例源代码: // PassArray.java // ...

随机推荐

  1. 【开源java游戏框架libgdx专题】-14-系统控件-Skin类

    Skin类主要用于存储用户界面的资源,该资源主要用于窗口部件.这些资源也包括纹理图片.位图画笔.颜色等内容.方便创建游戏组件,同时使用Skin也可以批量的粗略处理一些窗口部件. test.json { ...

  2. OD: Kernel Vulnerabilities Analyze

    内核漏洞大多出没于 ring3 到 ring0 的交互中.从 ring3 进入 ring0 的通道,以及操作系统提供的 API 都有可能存在漏洞.例如:驱动程序中 IoControl 的处理函数,SS ...

  3. NSlog警告—— 编译器打印NSInteger类型

    NSInter是apple推荐用的整形数据类型,在mac64位环境下用打印NSInteger的时候如果用%d,编译器会报警告: 对于32位代码,需要的%d说明符.但是,如果%d说明,得到的64位提示警 ...

  4. MySQL 元数据

    MySQL 元数据 你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. M ...

  5. MySQL学习-常用命令整理

    Eyes are more eloquent than lips. “眉目传情胜于甜言蜜语” 整理了一下自己遇到并且经常用到的MySQL命令,虽然官方文档上有很详细的解释,不过自己还是在这里记录一下, ...

  6. typedef , static和 extern

    typedef 1.作用:给已经存在的类型起一个新的名称 2.使用场合: 1> 基本数据类型 2> 指针 3> 结构体 4> 枚举 5> 指向函数的指针 #include ...

  7. HTTP分块传输

    HTTP分块传输 用途 对于在发送HTTP头部前,无法计算出Content-Length的HTTP请求及回复(例如WEB服务端产生的动态内容),可以使用分块传输,使得不至于等待所有数据产生后,再发送带 ...

  8. 使用Thumbnails对一个文件夹下的所有图片进行压缩处理

    public static void compressPic(){ try { Thumbnails.of(new File("/home/y/my_temp/ydbg-xy-pic&quo ...

  9. poj 2513Colored Sticks

    http://poj.org/problem?id=2513 #include<cstdio> #include<cstdlib> #include<cstring> ...

  10. 重新定义malloc和free 防止内存泄漏

    1, 定义供应用程序使用的头文件//libmem.h#ifndef _LIBMEM_H_#define _LIBMEM_H_ //声明自定义malloc及free函数extern void *my_m ...