我无法让我的printf语句在java中对齐

时间:2015-07-09 03:43:44

标签: java printf

我的printf语句遇到了麻烦。我无法准确地得到它们。这是我遇到问题的代码段。

while(choice != 4){
        if(choice == 1){
            System.out.println("NAME            ID          GPA\n");
            for(j = 0; j < i ;j++){
                System.out.printf("%s", fullName[j]);
                System.out.printf("%10d", id[j]);
                System.out.printf("%15.2f\n", gpa[j]);
            }
            System.out.println("");
        }

打印出来。

NAME            ID          GPA

Hoffman Caleb Joseph         1           4.00
Jones Bob Cray         2           3.80
Mitten Jose Crush         3           1.53

我怎样才能把它全部排好?

2 个答案:

答案 0 :(得分:5)

如果在名称格式语句中添加一个int,它将对齐文本:

 System.out.printf("%20s", fullName[j]);

将打印

Hoffman Caleb Joseph         1           4.00
      Jones Bob Cray         2           3.80
   Mitten Jose Crush         3           1.53

如果你想左对齐,那么在前面放一个减号

 System.out.printf("%-20s", fullName[j]);

将打印

Hoffman Caleb Joseph         1           4.00
Jones Bob Cray               2           3.80
Mitten Jose Crush            3           1.53

另外,您不需要3个单独的格式语句,您可以将所有3个组合成1:

System.out.printf("%-20s%10d%15.2f%n", fullName[j], id[j], gpa[j]);

另请注意,新行%n不是\n%n是一个格式字符串,用于打印系统相关的新行字符

答案 1 :(得分:1)

在格式说明符中,您应使用-之类的"%-10d来对齐列。