系统输出中的 Java 选项卡

Posted

技术标签:

【中文标题】系统输出中的 Java 选项卡【英文标题】:Java tab in system out 【发布时间】:2016-09-16 10:47:12 【问题描述】:

我必须创建一个应用程序来打印学生的结果。在作业中,我们必须使用\t,以便将所有内容标记在一个好的行中。

   for(int i = 0; i< 7; i++) 
         System.out.println("Vak/Project :" + naamVak[i] + "\t\tCijfer: " +
      inputCijfer[i] + "\tBehaalde studiepunten: " + studiepuntenVAK[i]);
   

它会打印项目的名称(名为 naamVak 的数组)、结果 (inputCijfer) 以及每个项目获得的分数 (studiepuntenVak)。

当我将结果打印到控制台时,显示如下:

Vak/Project :Fasten Your Seatbelts      Cijfer: 1.0 Behaalde studiepunten: 0
Vak/Project :Programming        Cijfer: 2.0 Behaalde studiepunten: 0
Vak/Project :Databases      Cijfer: 3.0 Behaalde studiepunten: 0
Vak/Project :Personal Skills        Cijfer: 4.0 Behaalde studiepunten: 0
Vak/Project :Project Skills     Cijfer: 5.0 Behaalde studiepunten: 0
Vak/Project :Infrastructure     Cijfer: 6.0 Behaalde studiepunten: 3
Vak/Project :Network Engineering 1      Cijfer: 7.0 Behaalde studiepunten: 3

我怎样才能将输出全部放在正确的行中?

【问题讨论】:

您可以“计算”已打印部分的长度,然后从那里开始。 /t 不考虑上一行或下一行 看看format 方法。 StringUtils#rightPad 可能会有所帮助。 制表符,即使在他的计数中得到纠正,也不能保证在所有环境中。阅读有关格式的信息,f.e.类 java.util.Formatter 和固定长度格式 制表符通常被计为每 8 个字符,但并非总是如此 【参考方案1】:

您可以使用 String.format 方法(使用类似 printf 的语法),并为宽度提供一个值。语法在这里:https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax,你可以这样使用:

System.out.println(String.format("%20s %20s %20s", naamVak[i], inputCijfer[i], studiepuntenVAK[i]));

这假设每列的最大输入宽度为 20 个字符

【讨论】:

谢谢,真的谢谢!我回家后会试试这个。完成后会给你一些反馈。【参考方案2】:

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

你可以使用String.format方法

String s1 = String.format("test right alignment:  %13s   %50s  ",'test a short string', 'test a very very very long string' );
String s2 = String.format("test left  aligmnent:  %-13s   %-50s  ",'test a short string', 'test a very very very long string'  );

System.out.println(s1);
System.out.println(s2);

【讨论】:

【参考方案3】:
System.out.println(String.format("%20s %20s %20s %20s %20s", "Vak/Project: ", naamVak[i], "Cijfer: ", inputCijfer[i], "Behaalde studiepunten: ", studiepuntenVAK[i]));

仍然给用户一个奇怪的视图。这是控制台的输出:

   Vak/Project:  Fasten Your Seatbelts             Cijfer:                   8.6 Behaalde studiepunten: 
   Vak/Project:           Programming             Cijfer:                   7.5 Behaalde studiepunten: 
   Vak/Project:             Databases             Cijfer:                   2.1 Behaalde studiepunten: 
   Vak/Project:       Personal Skills             Cijfer:                   2.3 Behaalde studiepunten: 
   Vak/Project:        Project Skills             Cijfer:                   2.4 Behaalde studiepunten: 
   Vak/Project:        Infrastructure             Cijfer:                   2.5 Behaalde studiepunten: 
   Vak/Project:  Network Engineering 1             Cijfer:                   2.6 Behaalde studiepunten: 

【讨论】:

您不应该使用答案作为交换帖子的方式,但无论如何,这是因为第一行和最后一行包含超过 20 个字符的条目:“系好安全带”和“网络工程” 1"。例如,您可以将“%20s %20s %20s %20s %20s”调整为喜欢“%20s %30s %20s %20s %20s”之类的

以上是关于系统输出中的 Java 选项卡的主要内容,如果未能解决你的问题,请参考以下文章

MERN 应用程序中的重复选项卡问题

检测用户是不是进入或退出 Flutter 中的选项卡

Java Build Path 中的 Order 和 Export 选项卡有啥用

如何在java脚本中打开Chrome中的新选项卡而不是新窗口

如何将停靠在选项卡中的 CDockablePane 带到前面

导致操作栏选项卡中的活动