我试图用4行文字居中,我正在寻找一个简单的解决方案.最终结果如下图所示



以文本为中心的

这就是我希望文本格式化后的外观。

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]);
}
}

我只是想弄清楚什么是最大的线,然后从左边插入空格。你能告诉我我做错了什么吗?

您的代码出现了一些问题:

  1. 您为5个字符串分配了内存,但只放入了4个值。出于同样的原因,它导致了CCD_ 1
  2. 我不明白参数text对函数的意义;它没有在任何地方使用过,所以我把它取了下来
  3. 居中文本的正确逻辑是找到最大长度的字符串,然后找到要居中的字符串的长度,然后使用以下公式计算要插入字符串之前的空格数:(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

相关内容

最新更新