2013-03-20 28 views
2

我正在制作TreeMap中的字符串列表,以跟踪一群学生的成绩。现在我的计划是打印字符串列表如下:如何从TreeMap格式化Java中的字符串列表以便以这种方式打印?

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; 
+2

使用'中的System.out.println \ t'(..)? – 2013-03-20 17:10:32

回答

3

最简单的解决方案可能是在打印语句中使用制表符而不是空格。

System.out.println(entry.getKey() + ":\t" + entry.getValue()); 

另一种方法是使用String format方法右垫学生的姓名用空格做。以下代码将在10个字符宽的列中打印学生的姓名。如果您在打印报告之前知道名称的最大长度(您应该能够轻松找到),这将更加可靠。

String name = "Tim:"; 
String student = String.format("%1$-10s", name); 
System.out.println(student + "A"); 
0

你可以看一下使用System.out.format与像权证明了等不仅仅是谷歌这种不同的格式选项的选项。这里有一个link你看看

0

你想留下字符串。 看看这个答案:How can I pad a String in Java?

你也可能想要一个函数来计算你试图输出的所有名字的最大长度。就像是。

private int maxLength(Collection<String> names) { 
     int max = 0; 
     for (String s : names) { 
      if (s.length() > max) { 
       max = s.length(); 
      } 
     } 
     return max; 
    } 

然后,像这样使用它:maxLength(grades.keySet());

0

输入这在循环的System.out.println()

String.format("%-10s %s", entry.getKey()+":", entry.getValue()); 
相关问题