竖排文本:
package demo;
import java.util.Scanner;
public class VAlign {
/*竖排文本:
*(横排转竖排=一维转二维数组)
* 思路:
* 1.从横排字符串的索引号入手(看做一维),画出竖排表格得出二维索引号,找出某个字符一维索引号与其所在二维之间的联系;
* 2.根据联系,创建一维数组,建立外层,内层循环,
* 3.将数组内字符连接起来,逢n折行,输出.
*/
public static void main(String[] args) {
Scanner console=new Scanner(System.in);
System.out.println("请输入汉字:");
String str=console.next();//控制台:字符串型
String s = valign(str, 5);// valign垂直对齐,每列5个字符,即行数
System.out.println(s);
}
/**
* 文字竖排
*
* @param str
* 一个横排文本
* @param size
* 竖排文本每列文字数量
* @return
*/
public static String valign(String str, int size) {
int rows = size;// 行数
int cols = str.length() / size;// 列数
if (str.length() % size != 0) {// 不整除时,列数++
cols++;
}
char[] chs = new char[rows * cols];// 创建数组,长度为行列之积
int idx = 0;
for (int i = cols - 1; i >= 0; i--) {// 外层循环,(cols-1)~0
for (int j = 0; j < rows; j++) {// 内层循环,0~(rows-1)
if (idx >= str.length()) {
// 字符串内容读完了,idx读完之后,又idx++刚好和字符串长度相等
chs[j * cols + i] = ' ';// 全角空格.(字符只能是1个,输入两个空格错误)
} else {
chs[j * cols + i] = str.charAt(idx++);
// j*cols+i,即一维索引号与二维索引号对应;
// idx++多次循环后,把字符串每一个字符取完
// 由于chs数组长度>=字符串str长度,所以需要"打补丁"
}
}
}
// 连接结果
String s = "";
for (int i = 0; i < chs.length; i++) {
s += chs[i];// 将数组内字符连接起来
if ((i + 1) % cols == 0) {// 加入回车(逢(cols-1)折行)
s += '\n';
}
}
return s;
}
}
本文介绍了如何在网页和文档中实现竖排文本,探讨了竖排在东方文字排版中的应用,以及CSS样式和特定字体设置来实现这一效果的方法。

2867

被折叠的 条评论
为什么被折叠?



