arrayList 的 Printf 输出到 table 并带有适当的缩进
Printf output for arrayList to table with proper indent
我基本上完成了我的作业,但输出中需要一些格式,我只是不明白如何使用 printf
来解决这个问题。我以前从来没有用过它。
我有用户输入的 ID 和密码,它们保存在数组列表中。
输出应如下所示:
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
进行正确格式化,而不是在我的打印行中使用 +" "+ 这种会导致此处问题的伪格式化)
你可以在System.out.println中用"\t"来标识:
System.out.println("test\ttest2");
试试这个
System.out.format("%d. %-15s %s%n", userList.indexOf(userList.get(i))+1, userList.get(i).getmId(), rot13(userList.get(i).getmPw()));
I just don't understand how I can use printf
这是方法的签名,from the docs。
public PrintStream printf(String format, Object... args)
让我们把返回值放在一边,关注参数:
format 是一个字符串,指定要使用的格式,args 是要使用该格式打印的变量列表.
举个例子
假设您要以这种特定格式打印字符串 -> "5 + 6 = 11"。
但这是此格式化字符串的一个特定实例,使用这些特定数字,您反而想输入任意数字,结果将是一个显示这些数字相加的字符串。
字符串格式是这样的:一个数字,一个space'',一个加号'+',一个数字,一个space,一个等号'=',一个space 最后还有一个数字。为了让 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
指定的格式将它们相加。
我基本上完成了我的作业,但输出中需要一些格式,我只是不明白如何使用 printf
来解决这个问题。我以前从来没有用过它。
我有用户输入的 ID 和密码,它们保存在数组列表中。
输出应如下所示:
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
进行正确格式化,而不是在我的打印行中使用 +" "+ 这种会导致此处问题的伪格式化)
你可以在System.out.println中用"\t"来标识:
System.out.println("test\ttest2");
试试这个
System.out.format("%d. %-15s %s%n", userList.indexOf(userList.get(i))+1, userList.get(i).getmId(), rot13(userList.get(i).getmPw()));
I just don't understand how I can use printf
这是方法的签名,from the docs。
public PrintStream printf(String format, Object... args)
让我们把返回值放在一边,关注参数:
format 是一个字符串,指定要使用的格式,args 是要使用该格式打印的变量列表.
举个例子
假设您要以这种特定格式打印字符串 -> "5 + 6 = 11"。 但这是此格式化字符串的一个特定实例,使用这些特定数字,您反而想输入任意数字,结果将是一个显示这些数字相加的字符串。
字符串格式是这样的:一个数字,一个space'',一个加号'+',一个数字,一个space,一个等号'=',一个space 最后还有一个数字。为了让 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
指定的格式将它们相加。