我需要对我正在进行的项目提出一些建议。
我正在创建一个ascii票据,其内容基于您输入扫描仪的内容。每行之间应包含51个字符,包括事件,日期/时间和位置。该事件获得自己的行,日期/时间和位置共享一条线。 继承人看起来应该是什么样的
| _________________你的活动在这里___________________ |
|日期和时间____________在这里的位置|
下划线只是为了显示边框和字符串之间有多少空间,它实际上并没有显示在程序中。
我知道你应该使用for循环来确定你的字符串之前和之后有多少空格,但我对如何实现这一点感到迷茫。
答案 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
}