zoukankan      html  css  js  c++  java
  • java:利用数组实现将古诗词纵向输出

     

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

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

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

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

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

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

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

     1  1 public class poem {
     2  2     public static void main(String[] args) {
     3  3     char [][]poem=new char[][]{
     4  4     "维天之命,".toCharArray(),
     5  5     "於穆不已。".toCharArray(),
     6  6     "於乎不显,".toCharArray(),
     7  7     "文王之德之纯.".toCharArray(),
     8  8     "假以溢我,".toCharArray(),
     9  9     "我其收之。".toCharArray(),
    10 10     "骏惠我文王,".toCharArray(),
    11 11     "曾孙笃之。".toCharArray()
    12 12     };

    2.接下来就是思考怎么去排列的问题了,一共要循环多少次?
    这里我们知道对于词语,字数每一行并不固定,要找出最大的字数长度,也就是说循环的次数就是我们最大的字数长度.保证每一行每一个元素都被访问到.
    25    int max = 0;                // 获取最大的字数长度
    26     for (int i = 0; i < poem.length+1; i++) {
    27         int t = poem[i].length;         // 获取第i行的长度
    28         if (t > max){                    // 第i行的长度大于最大值
    29             max = t;        
    30         }
    31     }        
    3.通过for循环,来把数组重新排列.
     32         for (int i=0;i<max;i++){                  //这里代表输出多少行
     33             for (int j=arrays.length-1;j>=0;j--){
     34                                                     // j代表的是排列前数组的行,用来判断原来第j行的字数
     35                 
     36                 if (i<arrays[j].length){
     37                     System.out.print(arrays[j][i]);
     38                 }else{
     39                     System.out.print(" ");
     40                 }
     41             }
     42             System.out.println();
     43         }
     44     }
     45 }                


    运行之后,这里都意识到一个问题,这里的词每一行的字数都不一样,原来是有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;    

    运行结果:

    曾骏我假文於於维
    孙惠其以王乎穆天
    笃我收溢之不不之
    之文之我德显已命
    。王。,之,。,
     ,  纯   
        .   
  • 相关阅读:
    线段树
    数据结构<三> 队列
    数据结构<二>双向链表
    数据结构<一>单链表
    扩展欧几里德算法
    90 个 node.js 扩展模块,我们疯了
    nodejs的查询构造器
    express的路由配置优化
    express路由方案
    Redis学习笔记~目录
  • 原文地址:https://www.cnblogs.com/Ansonrelovisa/p/5939989.html
Copyright © 2011-2022 走看看