代码之家  ›  专栏  ›  技术社区  ›  K. Groot

如何使我的println outlines/tabs达到我在这个for循环中想要的多行打印方式?

  •  1
  • K. Groot  · 技术社区  · 6 年前

    所以,我已经在这方面徘徊了一段时间,遇到了一些事情,比如使用格式和/T,以及其他什么。但是我仍然不知道如何正确地概述这个for循环生成的println的输出:

    for (int i = 0; i < AANTAL_CIJFERS; i++) //Toon cijfers per vak
        {
            System.out.println("Vak/project:\t" + vakken[i] + "\tCijfer\t: " + cijfers[i] + "\tBehaalde punten: " + puntBehaald(i));
        }
    

    它当前的打印方式如下: enter image description here

    但我希望打印行看起来更像这样: enter image description here

    但我就是想不出来,有人知道我怎么做到的吗?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Ahmad Al-Kurdi    6 年前

    在这种情况下,您必须使用Java System.out.printf() String.format() 方法而不是 System.out.print() System.out.println()

    请阅读此示例 how-to-use-formatting-with-printf-correctly-in-java tabs-does-not-result-in-aligned-columns 了解更多详细信息。

    还有一篇有用的文章 java-string-format-examples

    我只是将代码更新为以下代码,它对我很好:

     private static String format = "%s %-30s  ";
    private static String format2 = "%s %3s  ";
     . 
     .
    
        for (int i = 0; i < AANTAL_CIJFERS; i++) //Toon cijfers per vak
        {
            System.out.printf(format, "Vak/project: ", vakken[i]);
            System.out.printf(format2, "Cijfer: ", cijfers[i]);
            System.out.printf(format2, "Behaalde punten: ", puntBehaald(i));
             System.out.printf("%n");
        }
    
        2
  •  0
  •   K. Groot    6 年前

    所以我现在用这个作为代码:

     for (int i = 0; i < AANTAL_CIJFERS; i++) //Toon cijfers per vak
        {
            System.out.printf(format, "Vak/project: ", vakken[i]);
            System.out.printf(format, "Cijfer: ", cijfers[i]);
            System.out.printf(format, "Behaalde punten: ", puntBehaald(i));
            System.out.printf("\n");
        }
    

    由此得出: enter image description here

    所以它显然不能像我从文档中期望的那样工作。我做错什么了? 它应该是:vak/project:“output from vakken[i]”选项卡cijfer:“output from cijfers[i]”选项卡behalde punten:“output from puntbehaald(i)”。

    这是我现在的格式: private static String format = "%-20s%s";