1 回答
TA贡献1784条经验 获得超2个赞
您的代码存在一些问题:
您为 5 个字符串分配了内存,但只放置了 4 个值。出于同样的原因,它导致
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
添加回答
举报