如何从树映射中格式化Java中的字符串列表,以便以这种方式打印?
我在树形图中列出了一系列的字符串,以便跟踪一群学生的成绩。现在我的程序正在打印字符串列表,如下所示:如何从树映射中格式化Java中的字符串列表,以便以这种方式打印?,java,string,format,treemap,spacing,Java,String,Format,Treemap,Spacing,我在树形图中列出了一系列的字符串,以便跟踪一群学生的成绩。现在我的程序正在打印字符串列表,如下所示: Jimmy: C+ Tim: A Samantha: B- Mike: A- Jimmy: C+ Tim: A Samantha: B- Mike: A- 当我希望它像这样打印出来时: Jimmy: C+ Tim: A Samantha: B- Mike: A- Jimmy: C+ Tim: A Samantha: B- Mike: A-
Jimmy: C+
Tim: A
Samantha: B-
Mike: A-
Jimmy: C+
Tim: A
Samantha: B-
Mike: A-
当我希望它像这样打印出来时:
Jimmy: C+
Tim: A
Samantha: B-
Mike: A-
Jimmy: C+
Tim: A
Samantha: B-
Mike: A-
我怎样才能让名字和分数像这样隔开?下面是我的代码中打印所有内容的部分:
//Print all students with their grades
case "P": System.out.println();
for(Map.Entry<String, String> entry : grades.entrySet())
{
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println();
break;
//打印所有学生的成绩
案例“P”:System.out.println();
对于(Map.Entry:grades.entrySet())
{
System.out.println(entry.getKey()+“:”+entry.getValue());
}
System.out.println();
打破
最简单的解决方案可能是在打印语句中使用制表符而不是空格
System.out.println(entry.getKey() + ":\t" + entry.getValue());
另一种方法是使用String方法将学生的名字用空格右键填充。以下代码将在10个字符宽的列中打印学生姓名。如果您在打印报告之前知道名称的最大长度(您应该能够轻松找到),那么这将更加可靠
您可以查看使用System.out.format的选项,以及不同的格式选项,如right justifying out等。只需谷歌一下。这里有一个你可以看一下的,你想用左键填充字符串。 看看这个答案: 您可能还需要一个函数来计算要输出的所有名称的最大长度。差不多
private int maxLength(Collection<String> names) {
int max = 0;
for (String s : names) {
if (s.length() > max) {
max = s.length();
}
}
return max;
}
private int maxLength(集合名称){
int max=0;
用于(字符串s:名称){
如果(s.长度()>最大值){
最大值=s.长度();
}
}
返回最大值;
}
然后,像这样使用它:maxLength(grades.keySet()) 将其输入到循环中的
System.out.println()
:
String.format("%-10s %s", entry.getKey()+":", entry.getValue());
在System.out.println(..)中使用
\t
??