在java

时间:2016-11-04 22:23:04

标签: java

我最近开始学习java,在我的java类中,我必须创建一个方法,在我的主java类中打印出来,文本在左边,居中和右边。但是我想在不使用printf的情况下这样做。

这是我的文字:

MyJavaUtils.formatText("This is my text left justified", 'l', 38);
MyJavaUtils.formatText("This is my text right justified", 'r', 38);
MyJavaUtils.formatText("This is my text centred", 'c', 38);
System.out.println("----------------------------------------");
MyJavaUtils.formatText("This is also left justified", 'l', 38);
MyJavaUtils.formatText("This is also right justified", 'r', 38);
MyJavaUtils.formatText("This is also centred", 'c', 38);
System.out.println("----------------------------------------");
MyJavaUtils.formatText("Also left", 'l', 18);
MyJavaUtils.formatText("Also right", 'r', 18);
MyJavaUtils.formatText("Also centred", 'c', 18);
System.out.println("----------------------------------------");

到目前为止我的方法:

public static void formatText(String text, char justified, int wide) {
        int space = wide - text.length();
        for (int num = 0; num < space; ++num) {
            System.out.print(" ");
        }
        System.out.println(text);
    }
}

但是,此代码会将每一行文本打印到右侧。额外空格的数量是正确的,但我不希望每一行都打印到右侧。正如文本所暗示的那样,左对齐的文本应该在左边,右边,并且居中是好的,居中的。我不确定如何在一种方法中完成所有这些。

输出应如下所示:

>This is my text left justified        <
>       This is my text right justified<
>       This is my text centred        <

但是,我不太确定如何在不使用printf的情况下向左,向右和中心打印。我被告知通过找到文本的字符串长度的长度来做到这一点,我有。但是,我不确定如何应用它来打印适当数量的空格以将输出填充到正确的字符数。当我做中心输出时,如果额外空格的数量是奇数,我应该向右+1空格。

任何帮助或提示都将不胜感激!

3 个答案:

答案 0 :(得分:1)

我认为这种方法可以满足您的需求。

public static void formatText(String text, char justified, int wide)
{
    int nOfSpaces = wide - text.length();
    String spaces = new String();
    String result = new String();

    switch (justified)
    {
        case 'r':
            spaces = new String(new char[nOfSpaces]).replace('\0', ' ');
            result = spaces + text;
            break;
        case 'l':
            spaces = new String(new char[nOfSpaces]).replace('\0', ' ');
            result = text + spaces;
            break;
        case 'c':
            int lxNOfSpaces = nOfSpaces / 2;
            int rxNOfSpaces = (nOfSpaces % 2) == 0 ? lxNOfSpaces : lxNOfSpaces + 1;

            String lxSpaces = new String(new char[lxNOfSpaces]).replace('\0', ' ');
            String rxSpaces = new String(new char[rxNOfSpaces]).replace('\0', ' ');

            result = lxSpaces + text + rxSpaces;
            break;
    }
    System.out.println(result);
}

答案 1 :(得分:0)

要将文字居中,您应在字符串的左侧添加left = (wide - text.length()) / 2个空格,在右侧添加wide - text.length() - left个空格。

答案 2 :(得分:0)

你只需要将另外两个案例添加到方法

{{1}}