我从来没有正确理解printf是如何工作的,并且可以真正使用一些格式化帮助。我希望我的打印输出看起来像这样:
Student Correct Incorrect
1 3 7
2 4 6
3 8 2
等等。我只是无法找到格式化printf语句的正确方法来实现这一目标。这就是我所说的声明:
System.out.println ((studentAns.indexOf(ans) + 1) + "\t" + correct + "\t" + incorrect);
这就是我对标题的看法:
for (String heading : headings)
{
System.out.printf ("%8s\t", heading);
}
它尽可能保持间距,但不与标题对齐。新程序员在这里 - 非常感谢您的所有帮助。谢谢!
答案 0 :(得分:0)
这是一种在表格中对齐事物的方法,
// This will create a String of `i` spaces.
private static String getSpaces(int i) {
StringBuilder sb = new StringBuilder();
for (int t = 0; t < i; t++) {
sb.append(' ');
}
return sb.toString();
}
public static void main(String[] args) {
String[] heading = new String[] { "Student",
"Correct", "Incorrect" };
int[][] data = new int[][] {
new int[] { 1, 3, 7 }, new int[] { 2, 4, 6 },
new int[] { 3, 8, 2 } };
System.out.printf("%10s %10s %10s\n", heading[0],
heading[1], heading[2]);
for (int[] arr : data) {
// Shift each data element right by the half the heading string length
System.out.printf("%10s %10s %10s\n",
String.valueOf(arr[0])
+ getSpaces(heading[0].length() / 2),
String.valueOf(arr[1])
+ getSpaces(heading[1].length() / 2),
String.valueOf(arr[2])
+ getSpaces(heading[2].length() / 2));
}
}
输出
Student Correct Incorrect
1 3 7
2 4 6
3 8 2