如何使用格式缩进Java

时间:2019-01-16 05:00:22

标签: java

我希望在Java中使用格式缩进打印行,但是在过程上有些困惑。

我四处搜索,发现它显示以下选项:

String prefix1 = "short text:";
String prefix2 = "looooooooooooooong text:";
String msg = "indented";
/*
 * The second string begins after 40 characters. The dash means that the
 * first string is left-justified.
 */
String format = "%-40s%s%n";
System.out.printf(format, prefix1, msg);
System.out.printf(format, prefix2, msg);

我通过以下方式将其实现为自己的代码:

public class Main {

    public static void main(String[] args) {

        // Declare variables


        // Take in user input for report title
        System.out.println("Enter a title for this report");

        String msg = "=> ";
        String blank = "";

        String format = "%-4s%s%n";
        System.out.printf(format, blank, msg);
    }
}

我尝试使用以下方法删除空白:

public class Main {

    public static void main(String[] args) {

        // Declare variables


        // Take in user input for report title
        System.out.println("Enter a title for this report");

        String msg = "=> ";

        String format = "%-4s%s%n";
        System.out.printf(format, msg);
    }
}

但是在IntelliJ Idea中收到以下错误。

  

线程“ main”中的异常java.util.MissingFormatArgumentException:   格式说明符“%s”位于   java.base / java.util.Formatter.format(Formatter.java:2672)在   java.base / java.io.PrintStream.format(PrintStream.java:1053)位于   java.base / java.io.PrintStream.printf(PrintStream.java:949)在   Main.main(Main.java:32)

我的问题是,为什么需要第一个字符串?有没有办法声明我没有“空白”变量的方法?抱歉,如果在某个地方回答了该问题,我进行了搜索,但找不到。

这是我想要的输出:

Enter a Title for this report
    =>

谢谢您的时间。

2 个答案:

答案 0 :(得分:2)

您只需要更改格式字符串即可。

String format = "%8s%n";

删除一个%s,因为与示例代码相比,您传递的字符串少了一个,而8是第二行的缩进。

由于8是值1 tab = 8 spaces

答案 1 :(得分:1)

这可能有效。

import java.util.Formatter;
public class Main {

public static void main(String[] args) {

    System.out.println("Enter a title for this report");
    String msg = "=>";
    String output = String.format("%6s\n",msg); //7 th line
    System.out.print(output);

    }
}

在我指定的第7行中(6s)表示总字符串的长度为6。 msg 是2的长度,则剩余的4个空格将分配给左侧(如果我们提到“ -6 “将在右侧将4个空格分配给字符串 msg