mik*_*ike 15 java string-formatting
我想知道最简单的方法是将整数转换为等效的空格数.打印二叉搜索树时,我需要它用于节点之间的空间.我试过这个
int position = printNode.getPosition();
String formatter = "%1"+position+"s%2$s\n";
System.out.format(formatter, "", node.element);
Run Code Online (Sandbox Code Playgroud)
但是,与位置的int值相比,我得到的空间几乎是3倍.我不确定我是否正在格式化字符串.任何建议都会很棒!如果它更清楚,比如position = 6; 我想在节点元素之前打印6个空格.
Eya*_*der 16
我认为你的意思是这样的:
int n = 6;
String s = String.format("%1$"+n+"s", "");
Run Code Online (Sandbox Code Playgroud)
System.out.format("[%13s]%n", ""); // prints "[ ]" (13 spaces)
System.out.format("[%1$3s]%n", ""); // prints "[ ]" (3 spaces)
Run Code Online (Sandbox Code Playgroud)
你可以用空格创建一个char[]所需的长度,Arrays.fill然后创建一个String(或者只是append你自己的StringBuilder等).
import java.util.Arrays;
int n = 6;
char[] spaces = new char[n];
Arrays.fill(spaces, ' ');
System.out.println(new String(spaces) + "!");
// prints " !"
Run Code Online (Sandbox Code Playgroud)
如果您使用了很多可能的值n,而不是new char[n]每次创建和填充,您可以创建一个足够长的空格字符串,并substring根据需要缩短.
这是一种简单但垃圾的方式:
int count = 20;
String spaces = String.format("%"+count+"s", "");
Run Code Online (Sandbox Code Playgroud)
或填写
String spaces = String.format("%20s", "");
Run Code Online (Sandbox Code Playgroud)
直接解决方案:
int count = 20;
StringBuilder sb = new StringBuilder(count);
for (int i=0; i < count; i++){
sb.append(" ");
}
String s = sb.toString();
Run Code Online (Sandbox Code Playgroud)
就速度而言,StringBuilder是高效的。
| 归档时间: |
|
| 查看次数: |
31184 次 |
| 最近记录: |