600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java:利用数组实现将古诗词纵向输出

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

时间:2019-10-03 09:02:31

相关推荐

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

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

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

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

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

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

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

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

1 1 public class poem { 2 2public static void main(String[] args) { 3 3char [][]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;// 获取最大的字数长度26for (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: 8at 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;

运行结果:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。