java:利用数组实现将古诗词纵向输出
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:利用数组实现将古诗词纵向输出的更多相关文章
- Java利用数组随机抽取幸运观众
编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名. 思路如下: 定义输入框的按键事件,使用KeyEvent类的get ...
- java 去除数组重复数据,并输出重复数据值
/** * 去除重复数据 * @author Sunqinbo */ public class RemoveDuplicateData { public static void main(String ...
- Java利用递归算法统计1-6的数组排列组合数
Java利用递归算法统计1-6的数组排列组合数 1.设计源码 /** * @Title:ArrayCombination.java * @Package:com.you.data * @Descrip ...
- Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出
ylbtech-Java-Runoob-高级教程-实例-数组:05. Java 实例 – 数组输出 1.返回顶部 1. Java 实例 - 数组输出 Java 实例 以下实例演示了如何通过循环输出数 ...
- java中的栈(利用数组实现栈)
java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...
- Java数组去重(利用数组,不借助集合)
今天有个同学问我说老师,Java里边数组怎么去重,在不借助List集合的情况下,最后呢我整理了一下,打算发一篇博文,希望能帮助到有用的人,大佬绕过 public static void arrUniq ...
- Java之数组篇
动手动脑,第六次Tutorial--数组 这次的Tutorial讲解了Java中如何进行数组操作,包括数组声明创建使用和赋值运算,写这篇文章的目的就是通过实际运用已达到对数组使用的更加熟练,下面是实践 ...
- Java(数组)动手动脑
1>数组作为方法参数 阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: // PassArray.java // Pas ...
- JAVA中数组总结(课堂总结)
数组的特点: Arrays(数组)一种简单的数据结构元素具有相同的数据类型一旦创建之后,尺寸保持不变元素在内存中连续分布例子一:按引用与按值传递的示例源代码: // PassArray.java // ...
随机推荐
- 将sql数据库逆向生成PDM模型
由于接手的一个项目是公司前期外包出去的,所以到手的只有繁杂的代码,和数据库文件.由于是个新手,我需要一个数据字典来帮助我完成一些东西,所以我就想到从sql数据库转换出一个pdm模型的数据字典. 第一步 ...
- Linq101-Miscellaneous
using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class Miscell ...
- MySql Connector/Net Mysql like 搜索中文的问题(c#和asp.net连接mysql)
Connector/Net 6.9.8 选择.net/mono即可,不需要安装. 将对应版本的MySql.Data.dll复制到bin目录下即可使用 http://dev.mysql.com/down ...
- Dialog式的Activity(AndroidActivity生命周期)
概述 和普通的Activity跳转稍微不同的是,当第1个Activity跳转到第二个Activity后,如果点击'back'按钮(即Android键盘的按钮,则不会调用调用第一个Activity的on ...
- C语言零移位操作
给定一个整形数组要求把其中的零元素移动到数组的末尾 非零元顺序保持不变 以下采用两种方法实现 #include <stdlib.h> #include <stdio.h> #i ...
- 关于jQuery表单校验的应用
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- 事后调试之MiniDump转储
程序发布后,针对在用户使用过程中出现的一些问题进行调试,这个过程可以称为是事后调试.在程序Crash时转储MiniDump文件供软件开发工程师分析是一种比较常用的方法.下面介绍两种常用的在程序Cras ...
- 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。
无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...
- JQUERY1.9学习笔记 之内容过滤器(三) has选择器
描述:选择至少包含一个元素,匹配指定的标签的标签.jQuery( ":has(selector)" ) 例:给所有的div添加一个类"test",在他们中有一个 ...
- dede 留言板访问的目录
D:\APMServ5.2.6\www\htdocs\xyhy\templets\plus guestbook.rar 文件 里面 DEDE留言簿的插件: