Java 是否可以在程序输出中设置每行的最大字符数

Java 是否可以在程序输出中设置每行的最大字符数,java,format,output,Java,Format,Output,我想写一个程序,输出一篇文章。我只是在起诉System.out.print();每个段落开头带\t,结尾带\n的单独句子的函数 所以它看起来像这样: System.out.print("\tParagraph 1 Sentence 1"); System.out.print("Paragraph 1 Sentence 2"); System.out.print("Paragraph 1 Sentence 3"); System.out.print("Paragraph 1 Sentence 4\

我想写一个程序,输出一篇文章。我只是在起诉System.out.print();每个段落开头带\t,结尾带\n的单独句子的函数

所以它看起来像这样:

System.out.print("\tParagraph 1 Sentence 1");
System.out.print("Paragraph 1 Sentence 2");
System.out.print("Paragraph 1 Sentence 3");
System.out.print("Paragraph 1 Sentence 4\n");

System.out.print("\tParagraph 2 Sentence 2");
System.out.print("Paragraph 2 Sentence 2");
System.out.print("Paragraph 2 Sentence 3");
System.out.print("Paragraph 2 Sentence 4\n");
但这将把每一段打印在一行上

我想知道是否有可能设置每行打印的最大字符数,以便自动返回,就像我在Word中键入一样


提前谢谢

不,没有办法告诉API在80个字符之后添加换行符之类的内容

您必须滚动自己的“段落打印机”,该打印机跟踪自行首以来已打印的字符数,然后输出换行符

这里有一些东西让你明白我的意思:

    String[] paragraphs = {
        "Paragraph 1 Sentence 1. Paragraph 1 Sentence 2. Paragraph 1 Sentence 3. Paragraph 1 Sentence 4.",
        "Paragraph 2 Sentence 1. Paragraph 2 Sentence 2. Paragraph 2 Sentence 3. Paragraph 2 Sentence 4"
    };

    for (String paragraph : paragraphs) {
        Scanner s = new Scanner(paragraph);
        System.out.print("        "); // instead of \t
        int col = 8;
        while (s.hasNext()) {
            String word = s.next();
            if (col + word.length() > 50) {
                System.out.println();
                col = 0;
            }
            System.out.print(word + " ");
            col += word.length() + 1;
        }
        System.out.println();
    }
输出:

        Paragraph 1 Sentence 1. Paragraph 1 
Sentence 2. Paragraph 1 Sentence 3. Paragraph 1 
Sentence 4. 
        Paragraph 2 Sentence 1. Paragraph 2 
Sentence 2. Paragraph 2 Sentence 3. Paragraph 2 
Sentence 4 

如果您想要类似于Word的东西,那么您可能希望使用一个代码,该代码不只是在给定最大字符数的情况下拆分一行(包装它,通常由文本编辑器调用)(可以使用字符串类中的两个方法轻松实现,例如和可能的a)

因此,我建议您使用“Java教程”(来自Oracle)中的行边界示例代码:


正如在页面中提到的,该示例是独立于语言环境的代码,因此它可能足以满足您的需要。

具体打印什么?GUI小部件?控制台?其他?没有把一个词分成两行?只是控制台,是的,没有把一个词分成两行,这不完全正确;例如,您可以实现自己的
Writer
,在适当的地方插入换行符,但是这样的
Writer
当然不能解释最终显示上无法打印的代码点……这与我说的差不多,不是吗?API中没有任何内容,您需要自己编写;而且您的代码提取不会“利用”
Writer
,这就是这里应该做的,为什么您必须使用
Writer
?我说代码是让行动开始的东西。我从来没有说过这是一个生产质量的解决方案,是吗?事实上,OP没有;尽管如此,作为一个经验丰富的Java开发人员,您可以提供“monkey patch”代码,但也可以提供关于如何正确执行的提示。就这些!