Я задавался вопросом, что самый легкий путь состоит в том, чтобы преобразовать целое число в эквивалентное количество пробелов. Мне нужен он для пробелов между узлами при печати дерева двоичного поиска. Я попробовал это
int position = printNode.getPosition();
String formatter = "%1"+position+"s%2$s\n";
System.out.format(formatter, "", node.element);
Но я получаю почти в 3 раза больше пробелов по сравнению с международным значением положения. Я не действительно уверен, форматирую ли я строковое право также. Любые предложения были бы большими! Если это делает это более ясным, скажите положение = 6; я хочу 6 пробелов, распечатанных перед моим элементом узла.
Я думаю, вы имели в виду что-то вроде:
int n = 6;
String s = String.format("%1$"+n+"s", "");
System.out.format("[%13s]%n", ""); // prints "[ ]" (13 spaces)
System.out.format("[%1$3s]%n", ""); // prints "[ ]" (3 spaces)
Это простой, но бессмысленный способ:
int count = 20;
String spaces = String.format("%"+count+"s", "");
или заполнить
String spaces = String.format("%20s", "");
Вы можете создать char []
желаемой длины, Arrays.fill
его пробелами, а затем создать из него String
(или просто добавьте
к своему собственному StringBuilder
и т. д.).
import java.util.Arrays;
int n = 6;
char[] spaces = new char[n];
Arrays.fill(spaces, ' ');
System.out.println(new String(spaces) + "!");
// prints " !"
Если вы делаете это с множеством возможных значений n
, вместо того, чтобы каждый раз создавать и заполнять новый char [n]
, вы можете создать только один достаточно длинный строка пробелов и при необходимости возьмите более короткую подстроку
.
Прямое решение:
int count = 20;
StringBuilder sb = new StringBuilder(count);
for (int i=0; i < count; i++){
sb.append(" ");
}
String s = sb.toString();
StringBuilder эффективен с точки зрения скорости.
Почему бы не перебрать целое число и не добавить пробел на каждой итерации?
String spaces = "";
for (int i = 0 ; i < position ; i++) spaces += " ";
И вы можете использовать StringBuilder
вместо String, если позиция
может стать очень большой, и производительность будет проблемой.