Java форматирование вывода массива - PullRequest
0 голосов
/ 16 июня 2020

Я знаю, нам нужно использовать метод fortmat () при форматировании вывода. Вот мой код ниже:

int arr[] = { 38, 27, 43, 3, 9, 82, 10 };
    Arrays.stream(arr).forEach(s -> System.out.format("%2d", s));
//output     382743 3 98210

Если я использую следующий код:

Arrays.stream(arr).forEach(s -> System.out.format("%3d", s));
//output  38 27 43  3  9 82 10

Я хочу напечатать вывод только с одним пробелом между следующим значением. что-то вроде 38 27 43 3 9 82 10

Ответы [ 2 ]

4 голосов
/ 16 июня 2020

System.out.format() работает с заполнителями. Таким образом, %d означает «десятичное значение», которое вы дадите ему впоследствии. С помощью числа вы можете указать «ширину» заполнителя. Таким образом, %3d всегда будет иметь как минимум 3 ширины. Docs .

Если вы хотите вывести значение с одним пробелом между ними, сделайте что-то вроде:

Arrays.stream(arr).forEach(s -> System.out.format("%d ", s));

Затем вы поместите decimalValue (без указания ширины ) и "" (пробел) после каждой записи в массиве.

2 голосов
/ 16 июня 2020

Если вам нужен разделитель пробелов между элементами вашего массива int, можно использовать класс StringJoiner, как показано ниже:

int arr[] = { 38, 27, 43, 3, 9, 82, 10 };
StringJoiner sj = new StringJoiner(" ");
for (int i : arr) { sj.add(String.valueOf(i)); }
String spaceSeparatedNumbers = sj.toString();
System.out.println(spaceSeparatedNumbers); //<-- 38 27 43 3 9 82 10
...