中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。
输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsi
ce s
代码实现
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int c = scanner.nextInt(); //每一列的字符数 其实就是行数
scanner.nextLine();
String s = scanner.nextLine();
String[] split = s.split("");
int r = 0; //用来作为 split数组 的下标
int column; //列数
if (s.length() % c == 0) {
column = s.length() / c;
} else {
column = s.length() / c + 1;
}
int cc = column - 1; //从最后一列开始
String[][] str = new String[c][column];
//循环列,因为是竖直打印,所以外循环不是循环行
for (int i = 0; i < column; i++){
for (int j = 0; j < c; j++) {
if (r == split.length){ //全部字符都放入数组中直接退出
break;
}
//str[0][4] = split[0] 从最后一列,从上往下放入
//str[1][4] = split[1]
str[j][cc] = split[r++];
}
if (r == split.length){
break;
}
cc--; //列数减一
}
for (int i = 0; i < c; i++){ //行
for (int j = 0; j < column; j++) { //列
if (str[i][j] != null){
System.out.print(str[i][j] + "");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
}
}