L-039 古风排版

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)

输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsi
 ce s

思路:观察题,第一行的输入也就表示输出的行n,如果字符串的长度取余n!=0,则lie等于行数加1,然后定义一个二维数组,要对其先进行初始化(因为最后的输出最后一列少的部分应该是空格,而不是char数组默认的空字符),然后找到字符串长度和二维数组的行列下表的关系

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 ch[] = s.toCharArray();
int lie = ch.length / n;
if(ch.length % n != 0){
lie = lie + 1;
}
char ch1[][] = new char[n][lie];
for(int i = 0; i < n; i++){
for(int j = 0; j < lie; j++){
ch1[i][j] = ' ';
}
}
int l = lie - 1;
int count = 0;
for(int i = 0; i < ch.length; i++){
ch1[i % n][l] = ch[i];
count++;
if(count % n == 0){
l--;
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < lie; j++){
System.out.print(ch1[i][j]);
}
System.out.println();
}
scanner.close();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值