admin管理员组文章数量:1516870
用java实现PTA古风版
7-61 古风排版 (20 分)
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。
输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsice s
解题思路:拿到此题目,首先需要思考的是:输出格式,这个是怎么打印出来的,有什么规律。
因为从右向左打印首先:我考虑到是倒着打印出来,
如何处理字符不足的情况?
本题隐藏了一个条件,当字符不足时,用空格来补全,否则不用空格是不可能按照样例输出的。定义一个变量表示字符串下标,从0开始,当变量不小于字符串长度时,填充空格。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt(); //输入的行数scanner.nextLine(); // 读取换行符String s = scanner.nextLine();char[] attr = s.toCharArray(); //装换为字符数组int count = attr.length; //测量字符数组的长度// 如果字符长度不是 N 的整数倍,则要增加长度,补充空格 ,需要按整数倍输出while (count % N != 0) {count++;}// 一行一行打印for (int i = N; i > 0; i--) {// 设置每行起始字符的索引int begin = count - i;// 如果起始字符索引大于字符长度,则补空格,就是我增加的数字最后面的需要补空格while (begin >= attr.length) {// 每列字符的索引相差N,因为一共N行begin =begin - N;System.out.print(" ");}// 开始打印有效字符,列索引 -= N 倒着打印 ,也就是隔着倍数来打印for (int j = begin; j >= 0; j = j - N) {System.out.print(attr[j]);}System.out.println();}}
}
本文标签: 用java实现PTA古风版
版权声明:本文标题:用java实现PTA古风版 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1706949751a707284.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论