package homework;
import java.util.Scanner;
public class Valign2 {
// 将二维数组用一维数组做,效率更高
public static void main(String[] args) {
System.out.println("请输入文字:");
Scanner console = new Scanner(System.in);
String str = console.nextLine();
System.out.println("请输入数字:");
int size = console.nextInt();
System.out.println(valign(str, size));
}
/**
* 将一字符串,在指定位置折行竖排
*
* @param str
* 需要输入一字符串
* @param size
* 需要输入一个数字
* @return 返回一个竖排的字符串
*/
public static String valign(String str, int size) {
int rows = size;// 行
int cols = str.length() % size == 0 ? str.length() / size : str
.length()
/ size + 1;// 列
int idx = 0;
char[] chs = new char[cols * rows];
// 将字符填到数组中
for (int i = cols - 1; i >= 0; i--) {
for (int j = 0; j < rows; j++) {
if (idx == str.length()) {// 字符串内容读完了
chs[j * cols + i] = '~';//剩下的用'~'填充
} else {
chs[j * cols + i] = str.charAt(idx++);// 这是将二维转一维
}
}
}
// 输出
String s = "";
for (int i = 0; i < chs.length; i++) {
s += chs[i];
if ((i + 1) % cols == 0) {
s += '/n';
}
}
return s;
}
}