将字符串置于特定字符数的行上

时间:2014-10-05 03:06:11

标签: java for-loop ascii string-formatting

我需要对我正在进行的项目提出一些建议。

我正在创建一个ascii票据,其内容基于您输入扫描仪的内容。每行之间应包含51个字符,包括事件,日期/时间和位置。该事件获得自己的行,日期/时间和位置共享一条线。 继承人看起来应该是什么样的

  

| _________________你的活动在这里___________________ |

     

|日期和时间____________在这里的位置|

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

我知道你应该使用for循环来确定你的字符串之前和之后有多少空格,但我对如何实现这一点感到迷茫。

1 个答案:

答案 0 :(得分:0)

所以你的行是51个字符。我们称之为lineLength。 您想要居中的字符串也有一个长度,让我们调用stringLength

您必须添加到字符串中以使其填满整行的空格数为:lineLength - stringLength。这些空格中的一半应该在你的字符串之前,其中一半应该在你的字符串之后。

然而,如果你的字符串说长48个字符怎么办?然后不同的是3,它不会很好地除以2。所以你取一半lineLength - stringLength(向下舍入)并在前面添加这个数量的空格,然后在你想要居中的字符串后面添加余数。

这应该对你有所帮助。既然你知道如何使用for-loop我就离开了两个" 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

}