use*_*482 16 java printf text-align alignment
我需要显示一个包含数组价格的项目列表,并希望调整价格.我几乎让它工作但需要改进.下面是代码和输出.任何想法如何使所有价格一致?到目前为止有些工作,但有些工作没有.提前致谢.
//for loop
System.out.printf("%d. %s \t\t $%.2f\n",
i + 1, BOOK_TYPE[i], COST[i]);
Run Code Online (Sandbox Code Playgroud)
输出:
1. Newspaper $1.00
2. Paper Back $7.50
3. Hardcover book $10.00
4. Electronic book $2.00
5. Magazine $3.00
Run Code Online (Sandbox Code Playgroud)
小智 23
您可以尝试以下示例.在宽度之前使用' - '以确保左缩进.默认情况下,它们会缩进; 这可能不适合你的目的.
System.out.printf("%2d. %-20s $%.2f%n", i + 1, BOOK_TYPE[i], COST[i]);
Run Code Online (Sandbox Code Playgroud)
格式字符串语法:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
格式化数字打印输出:https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
PS:这可以作为对DwB答案的评论,但我仍然没有评论权限,所以回答它.
我想到的一个简单的解决方案是使用一块String空格:
String indent = " "; // 20 spaces.
Run Code Online (Sandbox Code Playgroud)
打印字符串时,计算实际缩进并将其添加到末尾:
String output = "Newspaper";
output += indent.substring(0, indent.length - output.length);
Run Code Online (Sandbox Code Playgroud)
这将调整字符串的空格数量,并将它们全部放在同一列中。
printf和类似printf的方法的格式规范采用可选的宽度参数.
System.out.printf( "%10d. %25s $%25.2f\n",
i + 1, BOOK_TYPE[i], COST[i] );
Run Code Online (Sandbox Code Playgroud)
将宽度调整为所需的值.