Java 将字符串居中放置在特定字符数的行上

Java 将字符串居中放置在特定字符数的行上,java,for-loop,ascii,string-formatting,Java,For Loop,Ascii,String Formatting,我需要一些关于我正在做的项目的建议 我正在创建一个ascii票证,它的内容基于您输入到扫描仪的内容。每行边框之间应包含51个字符,并包括事件、日期/时间和位置。事件有自己的行,日期/时间和位置共享一行。 这是它应该是什么样子 |_________________你在这里的活动___________________| |日期和时间\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我需要一些关于我正在做的项目的建议

我正在创建一个ascii票证,它的内容基于您输入到扫描仪的内容。每行边框之间应包含51个字符,并包括事件、日期/时间和位置。事件有自己的行,日期/时间和位置共享一行。 这是它应该是什么样子

|_________________你在这里的活动___________________|

|日期和时间\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu|

下划线只是用来显示边框和字符串之间有多少空间,它实际上并没有显示在程序中


我知道应该使用for循环来确定字符串前后的空格数,但我不知道如何实现这一点

那么您的行是51个字符。我们称之为线宽。 要居中的字符串也有一个长度,我们称之为stringLength

要使字符串居中以填充整行,必须添加到字符串中的空格数为:lineLength-stringLength。这些空格的一半应该放在字符串前面,一半应该放在字符串后面

但是,如果字符串长度为48个字符,该怎么办?那么不同的是3,它不能很好地除以2。因此,将lineLength-stringLength的一半向下舍入,并在前面添加该数量的空格,然后在要居中的字符串后面添加剩余的空格

这应该对你有点帮助。因为您知道如何使用for循环,所以我留下了两个TODO占位符,您需要用for循环替换它们

public static void main(String[] args) {
    String stringToCenter = "blablah";
    int lineLength = 51;
    int stringLength = stringToCenter.length();

    int missingSpaces = lineLength - stringLength;
    int paddingBefore = missingSpaces / 2;
    int paddingAfter = missingSpaces - paddingBefore;

    // TODO: write code to print "paddingBefore" spaces

    System.out.print(stringToCenter);

    // TODO: write code to print "paddingAfter" spaces

}