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

http://img4.mukewang.com/61de8ac000018b0a03780073.jpg

文本居中


这就是我希望文本在格式化后的样子。


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

        }


}

我试图通过找出最大的线来做到这一点,然后从左边插入黑色空格。你能告诉我我做错了什么吗?


胡说叔叔
浏览 123回答 1
1回答

一只斗牛犬

您的代码存在一些问题:您为 5 个字符串分配了内存,但只放置了 4 个值。出于同样的原因,它导致NullPointerException.我不明白参数text对函数的意义;它没有在任何地方使用,所以我将其删除。居中文本的正确逻辑是找到最大长度的字符串,然后找到要居中的字符串长度,然后使用以下公式计算要在字符串之前插入的空格数:&nbsp;(maxLen / 2) - (textLen / 2)代码如下:&nbsp; &nbsp; static void printCentered() {&nbsp; &nbsp; &nbsp; &nbsp; String[] textArray = new String[5];&nbsp; &nbsp; &nbsp; &nbsp; int maxi = -1;&nbsp; &nbsp; &nbsp; &nbsp; textArray[0] = "Drei Chinesen mit dem Kontrabass";&nbsp; &nbsp; &nbsp; &nbsp; textArray[1] = "sassen auf der Strasse und erzaehlten sich was.";&nbsp; &nbsp; &nbsp; &nbsp; textArray[2] = "Da kam ein Mann: Ja was ist denn das?";&nbsp; &nbsp; &nbsp; &nbsp; textArray[3] = "Drei Chinesen mit dem Kontrabass.";&nbsp; &nbsp; &nbsp; &nbsp; textArray[4] = "Hello World!";&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i <= 4; i++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (textArray[i].length() > maxi)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;maxi = textArray[i].length();&nbsp; &nbsp; &nbsp; &nbsp; final int maxiByTwo = maxi / 2;&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i <= 4; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final int textLenByTwo = textArray[i].length() / 2;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final int diff = maxiByTwo - textLenByTwo;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int j = 0; j < diff; j++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(" ");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(textArray[i]);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }这是工作代码的链接:https : //ideone.com/QiNIu1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java