带有适当缩进的arrayList的Printf输出到表

时间:2018-11-24 16:55:05

标签: java arraylist format printf tabular

我的分配工作基本上已经完成,但是输出中需要一些格式化,但我只是不明白如何使用printf解决问题。我以前从未使用过它。

我有用户输入的id和pws,它们保存在数组列表中。

输出应如下所示:

    Nr. Name                               Password (ROT13)
-----------------------------------------------------------
 1. Sally Hu                               nopNOP
 2. Bernd das Brot                         zrvaCnffjbeg
 3. John Doe                               klmTRURVZ
-----------------------------------------------------------

但是对我来说看起来像这样:

 Nr. Name                                 Password (ROT13)
-----------------------------------------------------------
 1. Sally Hu                               nopNOP
 2. Bernd das Brot                             zrvaCnffjbeg
 3. John Doe                               klmTRURVZ
-----------------------------------------------------------

当前打印代码:

  System.out.println("Nr. Name                       Passwort (ROT13)");


    System.out.println("-----------------------------------------------------------");
                    for(int i = 0; i < userList.size();i++)
                    {
                        System.out.println((userList.indexOf(userList.get(i))+1) +". " + userList.get(i).getmId() + "       " + rot13(userList.get(i).getmPw()));    
                    }

是否有人可以快速帮助我,甚至可以解释一些用于解决此格式问题的printf函数? (因此将来我可以正确地使用printf进行格式化,而不是在我的打印行中使用+“” +进行这种伪造的伪格式化,从而导致类似此处的问题)

3 个答案:

答案 0 :(得分:0)

您可以在System.out.println中以“ \ t”标识:

System.out.println("test\ttest2");

答案 1 :(得分:0)

尝试

 System.out.format("%d. %-15s %s%n", userList.indexOf(userList.get(i))+1, userList.get(i).getmId(), rot13(userList.get(i).getmPw()));    

答案 2 :(得分:0)

  

我只是不明白如何使用printf

这是方法的签名from the docs

public PrintStream printf(String format, Object... args)

我们将返回值放在一边,并关注参数

format 是一个字符串,用于指定要使用的格式,而 args 是要使用该格式打印的变量的列表。

让我们举个例子。

假设您要以这种特定格式打印字符串-> “ 5 + 6 = 11” 。 但这是此格式的字符串的特定实例,具有这些特定的数字,而您想放置一个任意数字,结果将是显示这些数字加法的字符串。

字符串格式是这样的:数字,空格'',加号'+',数字,空格,等号'=',空格和最后一个数字。为了使printf()理解这一点,您需要在第一个参数中将其作为字符串提供。

这是该字符串String format = "%d + %d = %d"

printf()从上面的字符串中知道您想要的格式,它将用整数变量替换每个'%d'(浮点数为%f,字符串为%s等)。这些是您在 printf()之后补充的整数。

最后,在我们的特定示例中,再次为“ 5 + 6 = 11”

int number1 = 5, number2 = 6;
String format = "%d + %d = %d";
//print the result formatted
System.out.printf(format,number1, number2, number1+number2);

您可以更改number1和number2的值,其结果将始终是String format指定的格式。