有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中对字符数组的文本进行对齐?

我试图返回一个已经对齐的字符数组左、右和中

假设每行最多有6个字符。经证明合理的文本中的各自产出将是:

Left:
How is
your
day

Center:
How is
 your
 day

Right:
How is
  your
   day

通过使用for循环,我在数组中的行超过最大限制6之前添加了一个'\n'

Example[3] = '\n';

我如何才能返回数组,使其以合理的格式输出

我做了一些搜索,我所能找到的就是如何证明字符串的正确性

抱歉,格式太糟糕了。我不知道如何把它格式化好


共 (2) 个答案

  1. # 1 楼答案

    这是一个非常基本的例子

    它基本上用空格填充String值,以提供对齐

    public class Align {
    
        public static void main(String[] args) {
            String values[] = new String[]{
                "How is",
                "your",
                "day"};
    
            int maxLength = 0;
            for (String value : values) {
                maxLength = Math.max(value.length(), maxLength);
            }
    
            System.out.println("Left:");
            for (String value : values) {
                System.out.println("[" + leftPad(value, maxLength) + "]");
            }
            System.out.println("\nRight:");
            for (String value : values) {
                System.out.println("[" + rightPad(value, maxLength) + "]");
            }
            System.out.println("\nCenter:");
            for (String value : values) {
                System.out.println("[" + centerPad(value, maxLength) + "]");
            }
        }
    
        public static String leftPad(String sValue, int iMinLength) {
    
            StringBuilder sb = new StringBuilder(iMinLength);
            sb.append(sValue);
    
            while (sb.length() < iMinLength) {
    
                sb.append(" ");
    
            }
    
            return sb.toString();
    
        }
    
        public static String rightPad(String sValue, int iMinLength) {
    
            StringBuilder sb = new StringBuilder(iMinLength);
            sb.append(sValue);
    
            while (sb.length() < iMinLength) {
    
                sb.insert(0, " ");
    
            }
    
            return sb.toString();
    
        }
    
        public static String centerPad(String sValue, int iMinLength) {
    
            if (sValue.length() < iMinLength) {
    
                int length = sValue.length();
                int left = (iMinLength - sValue.length()) / 2;
                int right = iMinLength - sValue.length() - left;
    
                StringBuilder sb = new StringBuilder(sValue);
                for (int index = 0; index < left; index++) {
                    sb.insert(0, " ");
                }
                for (int index = 0; index < right; index++) {
                    sb.append(" ");
                }
    
                sValue = sb.toString();
    
            }
    
            return sValue;
    
        }
    }
    

    它只是输出

    Left:
    [How is]
    [your  ]
    [day   ]
    
    Right:
    [How is]
    [  your]
    [   day]
    
    Center:
    [How is]
    [ your ]
    [ day  ]
    
  2. # 2 楼答案

    Commons StringUtils有各种方法以各种格式对字符串进行对齐。比如leftpad,rightpad,centerpad