这是我希望文本在格式化后的外观。
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]);
}
}
我只是通过找出最大的行并从左边插入黑色空格来尝试做到这一点。 你能告诉我我在做什么错吗?
答案 0 :(得分:0)
您的代码存在一些问题:
NullPointerException
。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