以文本为中心的
这就是我希望文本格式化后的外观。
static void printCentered(String text) {
String[] textArray;
int maxi = -1;
textArray = new String[5];
textArray[0] = "Drei Chinesen mit dem Kontrabass";
textArray[1] = "sassen auf der Strasse und erzaehlten sich was.";
textArray[2] = "Da kam ein Mann: Ja was ist denn das?";
textArray[3] = "Drei Chinesen mit dem Kontrabass.";
for (int i = 0; i <= 4; i++)
if (textArray[i].length() > maxi)
maxi=textArray[i].length();
for(int i=0; i<= 4; i++)
if (maxi-textArray[i].length()!=0)
{
int diff=maxi-textArray[i].length();
System.out.print(" ");
System.out.println(textArray[i]);
}
}
我只是想弄清楚什么是最大的线,然后从左边插入空格。你能告诉我我做错了什么吗?
您的代码出现了一些问题:
- 您为5个字符串分配了内存,但只放入了4个值。出于同样的原因,它导致了CCD_ 1
- 我不明白参数
text
对函数的意义;它没有在任何地方使用过,所以我把它取了下来 - 居中文本的正确逻辑是找到最大长度的字符串,然后找到要居中的字符串的长度,然后使用以下公式计算要插入字符串之前的空格数:
(maxLen / 2) - (textLen / 2)
代码如下:
static void printCentered() {
String[] textArray = new String[5];
int maxi = -1;
textArray[0] = "Drei Chinesen mit dem Kontrabass";
textArray[1] = "sassen auf der Strasse und erzaehlten sich was.";
textArray[2] = "Da kam ein Mann: Ja was ist denn das?";
textArray[3] = "Drei Chinesen mit dem Kontrabass.";
textArray[4] = "Hello World!";
for (int i = 0; i <= 4; i++)
if (textArray[i].length() > maxi)
maxi = textArray[i].length();
final int maxiByTwo = maxi / 2;
for (int i = 0; i <= 4; i++) {
final int textLenByTwo = textArray[i].length() / 2;
final int diff = maxiByTwo - textLenByTwo;
for (int j = 0; j < diff; j++)
System.out.print(" ");
System.out.println(textArray[i]);
}
}
以下是工作代码的链接:https://ideone.com/QiNIu1